├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md └── workflows │ ├── inclusivelint.yml │ └── main.yml ├── .gitignore ├── .vscode ├── extensions.json ├── launch.json ├── settings.json └── tasks.json ├── .vscodeignore ├── CHANGELOG.md ├── LICENSE.txt ├── ProcessingTasks.json ├── README.md ├── package-lock.json ├── package.json ├── pde.configuration.json ├── processing.png ├── snippets └── snippets.json ├── src ├── extension.ts ├── processing-tasks.ts ├── search.ts └── test │ ├── runTest.ts │ └── suite │ ├── extension.test.ts │ └── index.ts ├── syntaxes └── pde.tmLanguage ├── tsconfig.json └── tslint.json /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: "[BUG] " 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **VSCode (please complete the following information):** 27 | - OS: [e.g. iOS8.1] 28 | - Version [e.g. 22] 29 | 30 | **Additional context** 31 | Add any other context about the problem here. 32 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: "[FEATURE] " 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.github/workflows/inclusivelint.yml: -------------------------------------------------------------------------------- 1 | name: Inclusive check 2 | 3 | on: 4 | workflow_dispatch: 5 | inputs: 6 | version: 7 | description: 'Version Number' 8 | required: true 9 | default: '0.0.3' 10 | 11 | jobs: 12 | inclusivelint: 13 | runs-on: ubuntu-latest 14 | 15 | steps: 16 | - uses: actions/checkout@v2 17 | 18 | - name: Install inclusive linter version ${{ github.event.inputs.version }} 19 | run: | 20 | wget https://github.com/inclusivelint/inclusivelint/releases/download/${{ github.event.inputs.version }}/inclusivelint -O- | tr -d '\r' >inclusivelint 21 | sudo chmod +x inclusivelint && sudo mv inclusivelint /usr/bin 22 | mkdir ~/.inclusivelint 23 | wget https://github.com/inclusivelint/inclusivelint/releases/download/${{ github.event.inputs.version }}/outputRelation.txt -O- | tr -d '\r' >outputRelation.txt 24 | sudo mv outputRelation.txt ~/.inclusivelint 25 | - name: Run inclusive linter on ${{ github.ref }} 26 | run: | 27 | export TERM=xterm 28 | inclusivelint . 29 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | on: 2 | push: 3 | branches: 4 | - '*' 5 | tags: 6 | - 'v*' 7 | 8 | jobs: 9 | build: 10 | strategy: 11 | matrix: 12 | os: [macos-latest, ubuntu-latest, windows-latest] 13 | runs-on: ${{ matrix.os }} 14 | steps: 15 | - name: Checkout 16 | uses: actions/checkout@v2 17 | - name: Install Node.js 18 | uses: actions/setup-node@v4 19 | with: 20 | node-version: 20 21 | - run: npm install 22 | - name: Run tests 23 | uses: GabrielBB/xvfb-action@v1.2 24 | with: 25 | run: npm test 26 | - name: Create Release 27 | if: success() && startsWith( github.ref, 'refs/tags/v') && matrix.os == 'ubuntu-latest' 28 | uses: actions/create-release@v1 29 | env: 30 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token 31 | with: 32 | tag_name: ${{ github.ref }} 33 | release_name: Release ${{ github.ref }} 34 | - name: Publish 35 | if: success() && startsWith( github.ref, 'refs/tags/v') && matrix.os == 'ubuntu-latest' 36 | run: npm run deploy 37 | env: 38 | VSCE_PAT: ${{ secrets.VSCE_PAT }} 39 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | out 2 | node_modules 3 | .vscode-test 4 | *.log 5 | .idea 6 | *.vsix -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // See http://go.microsoft.com/fwlink/?LinkId=827846 3 | // for the documentation about the extensions.json format 4 | "recommendations": [ 5 | "ms-vscode.vscode-typescript-tslint-plugin" 6 | ] 7 | } -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | // A launch configuration that compiles the extension and then opens it inside a new window 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | { 6 | "version": "0.2.0", 7 | "configurations": [ 8 | { 9 | "name": "Run Extension", 10 | "type": "extensionHost", 11 | "request": "launch", 12 | "runtimeExecutable": "${execPath}", 13 | "args": [ 14 | "--extensionDevelopmentPath=${workspaceFolder}" 15 | ], 16 | "outFiles": [ 17 | "${workspaceFolder}/out/**/*.js" 18 | ], 19 | "preLaunchTask": "npm: watch" 20 | }, 21 | { 22 | "name": "Extension Tests", 23 | "type": "extensionHost", 24 | "request": "launch", 25 | "runtimeExecutable": "${execPath}", 26 | "args": [ 27 | "--extensionDevelopmentPath=${workspaceFolder}", 28 | "--extensionTestsPath=${workspaceFolder}/out/test/suite/index" 29 | ], 30 | "outFiles": [ 31 | "${workspaceFolder}/out/test/**/*.js" 32 | ], 33 | "preLaunchTask": "npm: watch" 34 | } 35 | ] 36 | } 37 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "files.exclude": { 3 | "out": false // set this to true to hide the "out" folder with the compiled JS files 4 | }, 5 | "search.exclude": { 6 | "out": true // set this to false to include "out" folder in search results 7 | }, 8 | // Turn off tsc task auto detection since we have the necessary tasks as npm scripts 9 | "typescript.tsc.autoDetect": "off", 10 | } -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | // See https://go.microsoft.com/fwlink/?LinkId=733558 2 | // for the documentation about the tasks.json format 3 | { 4 | "version": "2.0.0", 5 | "tasks": [ 6 | { 7 | "type": "npm", 8 | "script": "watch", 9 | "problemMatcher": "$tsc-watch", 10 | "isBackground": true, 11 | "presentation": { 12 | "reveal": "never" 13 | }, 14 | "group": { 15 | "kind": "build", 16 | "isDefault": true 17 | } 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /.vscodeignore: -------------------------------------------------------------------------------- 1 | .vscode/** 2 | .vscode-test/** 3 | out/test/** 4 | src/** 5 | .gitignore 6 | vsc-extension-quickstart.md 7 | **/tsconfig.json 8 | **/tslint.json 9 | **/*.map 10 | **/*.ts -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## [1.4.6] - 2020-09-03 4 | 5 | ### Fixed 6 | 7 | - Updated markdown files 8 | 9 | ## [1.4.5] - 2020-09-03 10 | 11 | ### Fixed 12 | 13 | - Updated packages 14 | 15 | ### Changed 16 | 17 | - Using GitHub Actions instead of Travis 18 | 19 | ## [1.4.4] - 2020-08-25 20 | 21 | ### Added 22 | 23 | Can now use DuckDuckGo or Google to search. Thanks to [@atnbueno](https://github.com/atnbueno) 24 | 25 | ## [1.4.3] - 2020-08-25 26 | 27 | ### Fixed 28 | 29 | Merged in bugfix PRs from [@hysysk](https://github.com/hysysk) and [@atnbueno](https://github.com/atnbueno) 30 | 31 | Updated dependencies 32 | 33 | ## [1.4.1] - 2019-12-23 34 | 35 | ### Fixed 36 | 37 | Improved snippets.json thanks to work from [@jerrylususu](https://github.com/jerrylususu) 38 | 39 | Fixed Windows on Bash path issue thanks to [@micuat](https://github.com/micuat) 40 | 41 | ## [1.4.0] - 2019-08-30 42 | 43 | ### Fixed 44 | 45 | Updated tests from latest template to fix automatic builds. 46 | 47 | ### Added 48 | 49 | Users can now choose between processing.org's documentation and p5js 50 | 51 | Thanks to [@brianmcfadden](https://github.com/brianmcfadden) 52 | 53 | ## [1.3.1] - 2019-06-05 54 | 55 | ### Fixed 56 | 57 | - Updated NPM packages 58 | 59 | ## [1.3] - 2019-02-06 60 | 61 | ### Removed 62 | 63 | - Removed the opn requirement, using new internal open external API 64 | 65 | ### Fixed 66 | 67 | - Updated package.json requirements 68 | 69 | ## [1.2.2] - 2018-07-25 70 | 71 | ### Added 72 | 73 | - Added path setting 74 | 75 | ## [1.1.0] - 2018-05-09 76 | 77 | ### Added 78 | 79 | - Added documentation search 80 | 81 | ### Fixed 82 | 83 | - Changed extension namespace to processing (from "extension") 84 | 85 | ## [1.0.0] - 2018-05-09 86 | 87 | ### Added 88 | 89 | - Added Changelog 90 | - Support for multi root workplaces 91 | 92 | ### Fixed 93 | 94 | - Updated dependencies and deploy scripts 95 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Tobiah Zarlez 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /ProcessingTasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [ 4 | { 5 | "label": "Run Sketch", 6 | "type": "shell", 7 | "group": { 8 | "kind": "build", 9 | "isDefault": true 10 | }, 11 | "command": "${config:processing.path}", 12 | "presentation": { 13 | "echo": true, 14 | "reveal": "always", 15 | "focus": false, 16 | "panel": "dedicated" 17 | }, 18 | "args": [ 19 | "--force", 20 | "--sketch=${workspaceRoot}", 21 | "--output=${workspaceRoot}/out", 22 | "--run" 23 | ], 24 | "windows": { 25 | "type": "process", 26 | "args": [ 27 | "--force", 28 | { 29 | "value": "--sketch=${workspaceRoot}", 30 | "quoting": "strong" 31 | }, 32 | { 33 | "value": "--output=${workspaceRoot}\\out", 34 | "quoting": "strong" 35 | }, 36 | "--run" 37 | ] 38 | } 39 | } 40 | ] 41 | } 42 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Processing for Visual Studio Code 2 | 3 | [![.github/workflows/main.yml](https://github.com/TobiahZ/processing-vscode/workflows/.github/workflows/main.yml/badge.svg)](https://github.com/TobiahZ/processing-vscode/actions) 4 | 5 | [![Marketplace Version](https://vsmarketplacebadge.apphb.com/version/Tobiah.language-pde.svg)](https://marketplace.visualstudio.com/items?itemName=Tobiah.language-pde) 6 | [![Installs](https://vsmarketplacebadge.apphb.com/installs/Tobiah.language-pde.svg)](https://marketplace.visualstudio.com/items?itemName=Tobiah.language-pde) 7 | [![Rating](https://vsmarketplacebadge.apphb.com/rating/Tobiah.language-pde.svg)](https://marketplace.visualstudio.com/items?itemName=Tobiah.language-pde) 8 | 9 | ## What this extension is 10 | 11 | This is a Visual Studio Code extension created by Tobiah Zarlez to add Processing language support. 12 | 13 | ## What this extension isn't 14 | 15 | This extension does not allow you to debug Java or Processing projects. 16 | 17 | ### Can you add a feature I want? 18 | 19 | Possibly! [Let us know](https://github.com/TobiahZ/processing-vscode/issues), we'd love to hear your suggestions. 20 | 21 | ## Installation Instructions 22 | 23 | 1. Open [Visual Studio Code](https://code.visualstudio.com/) 24 | 1. Open the Command Pallet (`CTRL+SHIFT+P` for Windows/Linux or `CMD+SHIFT+P` on Mac) enter the command “Install Extension” 25 | 1. Search for “Processing Language” and click on this extension. 26 | 1. Restart Visual Studio Code 27 | 28 | ## Feature list 29 | 30 | ### Syntax highlighting 31 | 32 | Open any .pde file, or choose "Processing" from the drop down menu in the bottom right corner. 33 | 34 | ### Snippets 35 | 36 | Once the language has been set, you will see code snippets pop up automatically as you type! 37 | 38 | ### Commands 39 | 40 | Installing this extension will add the following commands to your command pallette (`CTRL+SHIFT+P`, or opened by `View -> Command Pallette`). These commands can be selected and run from there, to complete the corresponding tasks. 41 | 42 | ## Command: Create Task File 43 | 44 | Adds a `.vscode/tasks.json` file to your project folder, that has the contents of the `ProcessingTasks.json` located in the root folder of this project. 45 | 46 | When you run this task (Keyboard shortcut: `Ctrl+Shift+B`), it will compile and run your project! 47 | 48 | If you would like to see output from the compiler, comment out the line `"showOutput": "never",` 49 | 50 | **NOTE:** Processing must be added to your path, or you must set the "processing.path" setting! 51 | 52 | Follow [these instructions](#add-processing-to-path) to add Processing to your path, or these [alternate instructions](#alternate-method) instead to modify the path setting. 53 | 54 | See "[Requirements](#requirements)" for full details. 55 | 56 | ## Command: Run Processing Project 57 | 58 | This is a shortcut for running the `.vscode/tasks.json` file. Same as pressing `Ctrl+Shift+B` 59 | 60 | **Note: Must have ran the "Create Processing Task File" command first, [see above](#command-create-task-file)!** 61 | 62 | ## Command: Open Extension Documentation 63 | 64 | Opens this documentation. 65 | 66 | By default uses processing.org's documentation. Can change to p5js's if preferred using the `processing.docs` setting. 67 | 68 | ## Command: Open Documentation for Selection 69 | 70 | Use the pallet command "Processing: Open Documentation for Selection" to open the processing documentation for the current selection. 71 | 72 | By default uses processing.org's documentation. Can change to p5js's if preferred using the `processing.docs` setting. 73 | 74 | ## Command: Search Processing Website 75 | 76 | Use the pallet command "Processing: Search Processing Website" to quickly search whatever you want on the processing website. 77 | 78 | By default uses processing.org's documentation. Can change to p5js's if preferred using the `processing.docs` setting. 79 | 80 | By default uses Google for search. Can change to DuckDuckGo if preferred using the `processing.search` setting. 81 | 82 | ## Requirements 83 | 84 | Installing the extension will give you instant access to [syntax highlighting](#syntax-highlighting) and [snippets](#snippets). 85 | 86 | However, in order to compile and run your processing project from Visual Studio Code, you will need to do three things: 87 | 88 | 1. Set up your `.vscode/tasks.json` file. (See: "[Command: Create Task File](#command-create-task-file)") 89 | 1. Add Processing to your path **OR** Modify your `.vscode/tasks.json` file. (See: "[Add Processing to path](#add-processing-to-path)" or "[alternate method](#alternate-method)") 90 | 1. Have a `.pde` whose filename matches the name of the project's folder (General Processing Requirement). Your file cannot contain any spaces or it will not run correctly. 91 | 92 | ## Add Processing to path 93 | 94 | In order to automatically compile and open from Visual Studio Code, I recommend adding Processing to your path. 95 | 96 | ### What does that mean? 97 | 98 | That means you should be able to type the `processing` from anywhere on your machine, and it will open Processing. 99 | 100 | ### How do I do that? 101 | 102 | It's easier than you might think! 103 | 104 | #### Windows 105 | 106 | * Open the "Advanced System Settings" by running sysdm.cpl 107 | * In the "System Properties" window, click on the Advanced tab. 108 | * In the "Advanced" section, click the Environment Variables button. 109 | * Edit the "Path" variable. Append the processing path (Example: `;C:\Program Files\Processing-3.0.1\`) to the variable value. Each entry is separated with a semicolon. 110 | 111 | #### Mac 112 | 113 | Open Processing, and click the `Tools` -> `Install "processing-java"` menu item. 114 | 115 | **Note:** You will have to install processing-java for all users for this to work 116 | 117 | #### Linux 118 | 119 | Set your `PATH` to where your processing application is located. 120 | 121 | Example: `export PATH=$PATH:/opt/processing/processing-2.0b4` 122 | 123 | You also need to create an alias for `processing-java` in `/bin/` instead of `/usr/bin/`. 124 | 125 | Example: `sudo ln -s /opt/processing/processing-java /bin/processing-java` 126 | 127 | ### Then what? 128 | 129 | Once you've installed Processing to your path, you need to add the appropriate `.vscode/tasks.json` file to every Processing project. 130 | 131 | See the command "[Create Task File](#command-create-task-file)" 132 | 133 | ### Alternate Method 134 | 135 | What if you cannot, or do not want to add Processing to your path? 136 | 137 | You can modify the `processing.path` setting to follow the path to wherever processing is installed on your machine. Be sure to remember to keep the `processing-java` at the end of the path! 138 | 139 | To change settings in VSCode, here is a link to the [official documentation](https://code.visualstudio.com/docs/getstarted/settings). 140 | 141 | (Remember, for Windows be sure to turn any "`\`" into "`\\`"!) 142 | 143 | Example: 144 | 145 | ```json 146 | "processing.path": "C:\\Program Files\\processing-3.0.1\\processing-java", 147 | ``` 148 | 149 | **NOTE:** This is untested on Mac and Linux 150 | 151 | ### If needed: Overwrite default terminal 152 | 153 | You may need to also overwrite your default terminal in order to get your task file to run correctly. 154 | 155 | Following [the instructions on the official VSCode documentation](https://code.visualstudio.com/docs/editor/tasks#_common-questions), all you have to do is add a few extra lines to your task file once you generate it. 156 | 157 | For example, if you are running Windows and want the task file to use Command Prompt ('cmd.exe') you can add an 'options' parameter under the 'windows' portion: 158 | 159 | ```json 160 | "windows": { 161 | "options": { 162 | "shell": { 163 | "executable": "cmd.exe", 164 | "args": [ 165 | "/d", "/c" 166 | ] 167 | } 168 | }, 169 | "args": [ 170 | "--force", 171 | { 172 | "value": "--sketch=${workspaceRoot}", 173 | "quoting": "strong" 174 | }, 175 | { 176 | "value": "--output=${workspaceRoot}\\out", 177 | "quoting": "strong" 178 | }, 179 | "--run" 180 | ] 181 | } 182 | ``` 183 | 184 | ## To Do List 185 | 186 | * Take nice looking (Animated?) screen shots for README/Instructions 187 | 188 | ## Credits 189 | 190 | Syntax highlighting and snippets code based on the [Processing Sublime Text plugin](https://github.com/b-g/processing-sublime). 191 | 192 | ## Other resources 193 | 194 | Here are some other resources I recommend: 195 | 196 | * [Processing's official site](https://processing.org/) 197 | * [Tobiah Zarlez Blog](http://www.TobiahZ.com) 198 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "language-pde", 3 | "version": "1.4.6", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/code-frame": { 8 | "version": "7.10.4", 9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", 10 | "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", 11 | "dev": true, 12 | "requires": { 13 | "@babel/highlight": "^7.10.4" 14 | } 15 | }, 16 | "@babel/helper-validator-identifier": { 17 | "version": "7.10.4", 18 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", 19 | "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", 20 | "dev": true 21 | }, 22 | "@babel/highlight": { 23 | "version": "7.10.4", 24 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", 25 | "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", 26 | "dev": true, 27 | "requires": { 28 | "@babel/helper-validator-identifier": "^7.10.4", 29 | "chalk": "^2.0.0", 30 | "js-tokens": "^4.0.0" 31 | } 32 | }, 33 | "@types/glob": { 34 | "version": "7.1.3", 35 | "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", 36 | "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", 37 | "dev": true, 38 | "requires": { 39 | "@types/minimatch": "*", 40 | "@types/node": "*" 41 | } 42 | }, 43 | "@types/minimatch": { 44 | "version": "3.0.3", 45 | "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", 46 | "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", 47 | "dev": true 48 | }, 49 | "@types/mocha": { 50 | "version": "5.2.7", 51 | "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", 52 | "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", 53 | "dev": true 54 | }, 55 | "@types/node": { 56 | "version": "10.17.29", 57 | "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.29.tgz", 58 | "integrity": "sha512-zLo9rjUeQ5+QVhOufDwrb3XKyso31fJBJnk9wUUQIBDExF/O4LryvpOfozfUaxgqifTnlt7FyqsAPXUq5yFZSA==", 59 | "dev": true 60 | }, 61 | "@types/vscode": { 62 | "version": "1.48.0", 63 | "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.48.0.tgz", 64 | "integrity": "sha512-sZJKzsJz1gSoFXcOJWw3fnKl2sseUgZmvB4AJZS+Fea+bC/jfGPVhmFL/FfQHld/TKtukVONsmoD3Pkyx9iadg==", 65 | "dev": true 66 | }, 67 | "agent-base": { 68 | "version": "4.3.0", 69 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", 70 | "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", 71 | "dev": true, 72 | "requires": { 73 | "es6-promisify": "^5.0.0" 74 | } 75 | }, 76 | "ansi-colors": { 77 | "version": "4.1.1", 78 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", 79 | "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", 80 | "dev": true 81 | }, 82 | "ansi-regex": { 83 | "version": "5.0.1", 84 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 85 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 86 | "dev": true 87 | }, 88 | "ansi-styles": { 89 | "version": "3.2.1", 90 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 91 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 92 | "dev": true, 93 | "requires": { 94 | "color-convert": "^1.9.0" 95 | } 96 | }, 97 | "anymatch": { 98 | "version": "3.1.3", 99 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 100 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 101 | "dev": true, 102 | "requires": { 103 | "normalize-path": "^3.0.0", 104 | "picomatch": "^2.0.4" 105 | } 106 | }, 107 | "argparse": { 108 | "version": "1.0.10", 109 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 110 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 111 | "dev": true, 112 | "requires": { 113 | "sprintf-js": "~1.0.2" 114 | } 115 | }, 116 | "azure-devops-node-api": { 117 | "version": "11.2.0", 118 | "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-11.2.0.tgz", 119 | "integrity": "sha512-XdiGPhrpaT5J8wdERRKs5g8E0Zy1pvOYTli7z9E8nmOn3YGp4FhtjhrOyFmX/8veWCwdI69mCHKJw6l+4J/bHA==", 120 | "dev": true, 121 | "requires": { 122 | "tunnel": "0.0.6", 123 | "typed-rest-client": "^1.8.4" 124 | } 125 | }, 126 | "balanced-match": { 127 | "version": "1.0.0", 128 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 129 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 130 | "dev": true 131 | }, 132 | "base64-js": { 133 | "version": "1.5.1", 134 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 135 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 136 | "dev": true 137 | }, 138 | "binary-extensions": { 139 | "version": "2.2.0", 140 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 141 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 142 | "dev": true 143 | }, 144 | "bl": { 145 | "version": "4.1.0", 146 | "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", 147 | "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", 148 | "dev": true, 149 | "requires": { 150 | "buffer": "^5.5.0", 151 | "inherits": "^2.0.4", 152 | "readable-stream": "^3.4.0" 153 | } 154 | }, 155 | "boolbase": { 156 | "version": "1.0.0", 157 | "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", 158 | "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", 159 | "dev": true 160 | }, 161 | "brace-expansion": { 162 | "version": "1.1.11", 163 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 164 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 165 | "dev": true, 166 | "requires": { 167 | "balanced-match": "^1.0.0", 168 | "concat-map": "0.0.1" 169 | } 170 | }, 171 | "braces": { 172 | "version": "3.0.3", 173 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 174 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 175 | "dev": true, 176 | "requires": { 177 | "fill-range": "^7.1.1" 178 | }, 179 | "dependencies": { 180 | "fill-range": { 181 | "version": "7.1.1", 182 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 183 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 184 | "dev": true, 185 | "requires": { 186 | "to-regex-range": "^5.0.1" 187 | } 188 | } 189 | } 190 | }, 191 | "browser-stdout": { 192 | "version": "1.3.1", 193 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", 194 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", 195 | "dev": true 196 | }, 197 | "buffer": { 198 | "version": "5.7.1", 199 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 200 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 201 | "dev": true, 202 | "requires": { 203 | "base64-js": "^1.3.1", 204 | "ieee754": "^1.1.13" 205 | } 206 | }, 207 | "buffer-crc32": { 208 | "version": "0.2.13", 209 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 210 | "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", 211 | "dev": true 212 | }, 213 | "builtin-modules": { 214 | "version": "1.1.1", 215 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", 216 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", 217 | "dev": true 218 | }, 219 | "call-bind": { 220 | "version": "1.0.2", 221 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 222 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 223 | "dev": true, 224 | "requires": { 225 | "function-bind": "^1.1.1", 226 | "get-intrinsic": "^1.0.2" 227 | } 228 | }, 229 | "camelcase": { 230 | "version": "6.3.0", 231 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", 232 | "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", 233 | "dev": true 234 | }, 235 | "chalk": { 236 | "version": "2.4.2", 237 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 238 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 239 | "dev": true, 240 | "requires": { 241 | "ansi-styles": "^3.2.1", 242 | "escape-string-regexp": "^1.0.5", 243 | "supports-color": "^5.3.0" 244 | }, 245 | "dependencies": { 246 | "supports-color": { 247 | "version": "5.5.0", 248 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 249 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 250 | "dev": true, 251 | "requires": { 252 | "has-flag": "^3.0.0" 253 | } 254 | } 255 | } 256 | }, 257 | "cheerio": { 258 | "version": "1.0.0-rc.12", 259 | "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", 260 | "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", 261 | "dev": true, 262 | "requires": { 263 | "cheerio-select": "^2.1.0", 264 | "dom-serializer": "^2.0.0", 265 | "domhandler": "^5.0.3", 266 | "domutils": "^3.0.1", 267 | "htmlparser2": "^8.0.1", 268 | "parse5": "^7.0.0", 269 | "parse5-htmlparser2-tree-adapter": "^7.0.0" 270 | } 271 | }, 272 | "cheerio-select": { 273 | "version": "2.1.0", 274 | "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", 275 | "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", 276 | "dev": true, 277 | "requires": { 278 | "boolbase": "^1.0.0", 279 | "css-select": "^5.1.0", 280 | "css-what": "^6.1.0", 281 | "domelementtype": "^2.3.0", 282 | "domhandler": "^5.0.3", 283 | "domutils": "^3.0.1" 284 | } 285 | }, 286 | "chokidar": { 287 | "version": "3.5.3", 288 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 289 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 290 | "dev": true, 291 | "requires": { 292 | "anymatch": "~3.1.2", 293 | "braces": "~3.0.2", 294 | "fsevents": "~2.3.2", 295 | "glob-parent": "~5.1.2", 296 | "is-binary-path": "~2.1.0", 297 | "is-glob": "~4.0.1", 298 | "normalize-path": "~3.0.0", 299 | "readdirp": "~3.6.0" 300 | } 301 | }, 302 | "chownr": { 303 | "version": "1.1.4", 304 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", 305 | "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", 306 | "dev": true 307 | }, 308 | "cliui": { 309 | "version": "7.0.4", 310 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 311 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 312 | "dev": true, 313 | "requires": { 314 | "string-width": "^4.2.0", 315 | "strip-ansi": "^6.0.0", 316 | "wrap-ansi": "^7.0.0" 317 | } 318 | }, 319 | "color-convert": { 320 | "version": "1.9.3", 321 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 322 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 323 | "dev": true, 324 | "requires": { 325 | "color-name": "1.1.3" 326 | } 327 | }, 328 | "color-name": { 329 | "version": "1.1.3", 330 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 331 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 332 | "dev": true 333 | }, 334 | "commander": { 335 | "version": "2.20.3", 336 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 337 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 338 | "dev": true 339 | }, 340 | "concat-map": { 341 | "version": "0.0.1", 342 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 343 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 344 | "dev": true 345 | }, 346 | "css-select": { 347 | "version": "5.1.0", 348 | "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", 349 | "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", 350 | "dev": true, 351 | "requires": { 352 | "boolbase": "^1.0.0", 353 | "css-what": "^6.1.0", 354 | "domhandler": "^5.0.2", 355 | "domutils": "^3.0.1", 356 | "nth-check": "^2.0.1" 357 | } 358 | }, 359 | "css-what": { 360 | "version": "6.1.0", 361 | "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", 362 | "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", 363 | "dev": true 364 | }, 365 | "debug": { 366 | "version": "3.2.6", 367 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", 368 | "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", 369 | "dev": true, 370 | "requires": { 371 | "ms": "^2.1.1" 372 | } 373 | }, 374 | "decamelize": { 375 | "version": "4.0.0", 376 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", 377 | "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", 378 | "dev": true 379 | }, 380 | "decompress-response": { 381 | "version": "6.0.0", 382 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", 383 | "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", 384 | "dev": true, 385 | "requires": { 386 | "mimic-response": "^3.1.0" 387 | } 388 | }, 389 | "deep-extend": { 390 | "version": "0.6.0", 391 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", 392 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", 393 | "dev": true 394 | }, 395 | "detect-libc": { 396 | "version": "2.0.1", 397 | "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", 398 | "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", 399 | "dev": true 400 | }, 401 | "diff": { 402 | "version": "5.0.0", 403 | "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", 404 | "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", 405 | "dev": true 406 | }, 407 | "dom-serializer": { 408 | "version": "2.0.0", 409 | "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", 410 | "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", 411 | "dev": true, 412 | "requires": { 413 | "domelementtype": "^2.3.0", 414 | "domhandler": "^5.0.2", 415 | "entities": "^4.2.0" 416 | } 417 | }, 418 | "domelementtype": { 419 | "version": "2.3.0", 420 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", 421 | "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", 422 | "dev": true 423 | }, 424 | "domhandler": { 425 | "version": "5.0.3", 426 | "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", 427 | "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", 428 | "dev": true, 429 | "requires": { 430 | "domelementtype": "^2.3.0" 431 | } 432 | }, 433 | "domutils": { 434 | "version": "3.0.1", 435 | "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz", 436 | "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==", 437 | "dev": true, 438 | "requires": { 439 | "dom-serializer": "^2.0.0", 440 | "domelementtype": "^2.3.0", 441 | "domhandler": "^5.0.1" 442 | } 443 | }, 444 | "emoji-regex": { 445 | "version": "8.0.0", 446 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 447 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 448 | "dev": true 449 | }, 450 | "end-of-stream": { 451 | "version": "1.4.4", 452 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 453 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 454 | "dev": true, 455 | "requires": { 456 | "once": "^1.4.0" 457 | } 458 | }, 459 | "entities": { 460 | "version": "4.4.0", 461 | "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", 462 | "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==", 463 | "dev": true 464 | }, 465 | "es6-promise": { 466 | "version": "4.2.8", 467 | "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", 468 | "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", 469 | "dev": true 470 | }, 471 | "es6-promisify": { 472 | "version": "5.0.0", 473 | "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", 474 | "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", 475 | "dev": true, 476 | "requires": { 477 | "es6-promise": "^4.0.3" 478 | } 479 | }, 480 | "escalade": { 481 | "version": "3.1.1", 482 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 483 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 484 | "dev": true 485 | }, 486 | "escape-string-regexp": { 487 | "version": "1.0.5", 488 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 489 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 490 | "dev": true 491 | }, 492 | "esprima": { 493 | "version": "4.0.1", 494 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 495 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 496 | "dev": true 497 | }, 498 | "expand-template": { 499 | "version": "2.0.3", 500 | "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", 501 | "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", 502 | "dev": true 503 | }, 504 | "fd-slicer": { 505 | "version": "1.1.0", 506 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", 507 | "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", 508 | "dev": true, 509 | "requires": { 510 | "pend": "~1.2.0" 511 | } 512 | }, 513 | "find-up": { 514 | "version": "5.0.0", 515 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 516 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 517 | "dev": true, 518 | "requires": { 519 | "locate-path": "^6.0.0", 520 | "path-exists": "^4.0.0" 521 | } 522 | }, 523 | "flat": { 524 | "version": "5.0.2", 525 | "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", 526 | "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", 527 | "dev": true 528 | }, 529 | "fs-constants": { 530 | "version": "1.0.0", 531 | "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", 532 | "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", 533 | "dev": true 534 | }, 535 | "fs.realpath": { 536 | "version": "1.0.0", 537 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 538 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 539 | "dev": true 540 | }, 541 | "fsevents": { 542 | "version": "2.3.2", 543 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 544 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 545 | "dev": true, 546 | "optional": true 547 | }, 548 | "function-bind": { 549 | "version": "1.1.1", 550 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 551 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 552 | "dev": true 553 | }, 554 | "get-caller-file": { 555 | "version": "2.0.5", 556 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 557 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 558 | "dev": true 559 | }, 560 | "get-intrinsic": { 561 | "version": "1.2.0", 562 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", 563 | "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", 564 | "dev": true, 565 | "requires": { 566 | "function-bind": "^1.1.1", 567 | "has": "^1.0.3", 568 | "has-symbols": "^1.0.3" 569 | } 570 | }, 571 | "github-from-package": { 572 | "version": "0.0.0", 573 | "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", 574 | "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", 575 | "dev": true 576 | }, 577 | "glob": { 578 | "version": "7.1.6", 579 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 580 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 581 | "dev": true, 582 | "requires": { 583 | "fs.realpath": "^1.0.0", 584 | "inflight": "^1.0.4", 585 | "inherits": "2", 586 | "minimatch": "^3.0.4", 587 | "once": "^1.3.0", 588 | "path-is-absolute": "^1.0.0" 589 | } 590 | }, 591 | "glob-parent": { 592 | "version": "5.1.2", 593 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 594 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 595 | "dev": true, 596 | "requires": { 597 | "is-glob": "^4.0.1" 598 | } 599 | }, 600 | "has": { 601 | "version": "1.0.3", 602 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 603 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 604 | "dev": true, 605 | "requires": { 606 | "function-bind": "^1.1.1" 607 | } 608 | }, 609 | "has-flag": { 610 | "version": "3.0.0", 611 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 612 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 613 | "dev": true 614 | }, 615 | "has-symbols": { 616 | "version": "1.0.3", 617 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 618 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", 619 | "dev": true 620 | }, 621 | "he": { 622 | "version": "1.2.0", 623 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 624 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 625 | "dev": true 626 | }, 627 | "hosted-git-info": { 628 | "version": "4.1.0", 629 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", 630 | "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", 631 | "dev": true, 632 | "requires": { 633 | "lru-cache": "^6.0.0" 634 | } 635 | }, 636 | "htmlparser2": { 637 | "version": "8.0.1", 638 | "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz", 639 | "integrity": "sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==", 640 | "dev": true, 641 | "requires": { 642 | "domelementtype": "^2.3.0", 643 | "domhandler": "^5.0.2", 644 | "domutils": "^3.0.1", 645 | "entities": "^4.3.0" 646 | } 647 | }, 648 | "http-proxy-agent": { 649 | "version": "2.1.0", 650 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", 651 | "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", 652 | "dev": true, 653 | "requires": { 654 | "agent-base": "4", 655 | "debug": "3.1.0" 656 | }, 657 | "dependencies": { 658 | "debug": { 659 | "version": "3.1.0", 660 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 661 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 662 | "dev": true, 663 | "requires": { 664 | "ms": "2.0.0" 665 | } 666 | }, 667 | "ms": { 668 | "version": "2.0.0", 669 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 670 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 671 | "dev": true 672 | } 673 | } 674 | }, 675 | "https-proxy-agent": { 676 | "version": "2.2.4", 677 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", 678 | "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", 679 | "dev": true, 680 | "requires": { 681 | "agent-base": "^4.3.0", 682 | "debug": "^3.1.0" 683 | } 684 | }, 685 | "ieee754": { 686 | "version": "1.2.1", 687 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 688 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 689 | "dev": true 690 | }, 691 | "inflight": { 692 | "version": "1.0.6", 693 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 694 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 695 | "dev": true, 696 | "requires": { 697 | "once": "^1.3.0", 698 | "wrappy": "1" 699 | } 700 | }, 701 | "inherits": { 702 | "version": "2.0.4", 703 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 704 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 705 | "dev": true 706 | }, 707 | "ini": { 708 | "version": "1.3.8", 709 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", 710 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", 711 | "dev": true 712 | }, 713 | "is-binary-path": { 714 | "version": "2.1.0", 715 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 716 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 717 | "dev": true, 718 | "requires": { 719 | "binary-extensions": "^2.0.0" 720 | } 721 | }, 722 | "is-extglob": { 723 | "version": "2.1.1", 724 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 725 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 726 | "dev": true 727 | }, 728 | "is-fullwidth-code-point": { 729 | "version": "3.0.0", 730 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 731 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 732 | "dev": true 733 | }, 734 | "is-glob": { 735 | "version": "4.0.3", 736 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 737 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 738 | "dev": true, 739 | "requires": { 740 | "is-extglob": "^2.1.1" 741 | } 742 | }, 743 | "is-number": { 744 | "version": "7.0.0", 745 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 746 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 747 | "dev": true 748 | }, 749 | "is-plain-obj": { 750 | "version": "2.1.0", 751 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", 752 | "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", 753 | "dev": true 754 | }, 755 | "is-unicode-supported": { 756 | "version": "0.1.0", 757 | "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", 758 | "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", 759 | "dev": true 760 | }, 761 | "js-tokens": { 762 | "version": "4.0.0", 763 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 764 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 765 | "dev": true 766 | }, 767 | "js-yaml": { 768 | "version": "3.13.1", 769 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", 770 | "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", 771 | "dev": true, 772 | "requires": { 773 | "argparse": "^1.0.7", 774 | "esprima": "^4.0.0" 775 | } 776 | }, 777 | "keytar": { 778 | "version": "7.9.0", 779 | "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", 780 | "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==", 781 | "dev": true, 782 | "requires": { 783 | "node-addon-api": "^4.3.0", 784 | "prebuild-install": "^7.0.1" 785 | } 786 | }, 787 | "leven": { 788 | "version": "3.1.0", 789 | "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", 790 | "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", 791 | "dev": true 792 | }, 793 | "linkify-it": { 794 | "version": "3.0.3", 795 | "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", 796 | "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", 797 | "dev": true, 798 | "requires": { 799 | "uc.micro": "^1.0.1" 800 | } 801 | }, 802 | "locate-path": { 803 | "version": "6.0.0", 804 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 805 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 806 | "dev": true, 807 | "requires": { 808 | "p-locate": "^5.0.0" 809 | } 810 | }, 811 | "log-symbols": { 812 | "version": "4.1.0", 813 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", 814 | "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", 815 | "dev": true, 816 | "requires": { 817 | "chalk": "^4.1.0", 818 | "is-unicode-supported": "^0.1.0" 819 | }, 820 | "dependencies": { 821 | "ansi-styles": { 822 | "version": "4.3.0", 823 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 824 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 825 | "dev": true, 826 | "requires": { 827 | "color-convert": "^2.0.1" 828 | } 829 | }, 830 | "chalk": { 831 | "version": "4.1.2", 832 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 833 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 834 | "dev": true, 835 | "requires": { 836 | "ansi-styles": "^4.1.0", 837 | "supports-color": "^7.1.0" 838 | } 839 | }, 840 | "color-convert": { 841 | "version": "2.0.1", 842 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 843 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 844 | "dev": true, 845 | "requires": { 846 | "color-name": "~1.1.4" 847 | } 848 | }, 849 | "color-name": { 850 | "version": "1.1.4", 851 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 852 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 853 | "dev": true 854 | }, 855 | "has-flag": { 856 | "version": "4.0.0", 857 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 858 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 859 | "dev": true 860 | }, 861 | "supports-color": { 862 | "version": "7.2.0", 863 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 864 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 865 | "dev": true, 866 | "requires": { 867 | "has-flag": "^4.0.0" 868 | } 869 | } 870 | } 871 | }, 872 | "lru-cache": { 873 | "version": "6.0.0", 874 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 875 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 876 | "dev": true, 877 | "requires": { 878 | "yallist": "^4.0.0" 879 | } 880 | }, 881 | "markdown-it": { 882 | "version": "12.3.2", 883 | "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", 884 | "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", 885 | "dev": true, 886 | "requires": { 887 | "argparse": "^2.0.1", 888 | "entities": "~2.1.0", 889 | "linkify-it": "^3.0.1", 890 | "mdurl": "^1.0.1", 891 | "uc.micro": "^1.0.5" 892 | }, 893 | "dependencies": { 894 | "argparse": { 895 | "version": "2.0.1", 896 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 897 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 898 | "dev": true 899 | }, 900 | "entities": { 901 | "version": "2.1.0", 902 | "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", 903 | "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", 904 | "dev": true 905 | } 906 | } 907 | }, 908 | "mdurl": { 909 | "version": "1.0.1", 910 | "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", 911 | "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", 912 | "dev": true 913 | }, 914 | "mime": { 915 | "version": "1.6.0", 916 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 917 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 918 | "dev": true 919 | }, 920 | "mimic-response": { 921 | "version": "3.1.0", 922 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", 923 | "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", 924 | "dev": true 925 | }, 926 | "minimatch": { 927 | "version": "3.1.2", 928 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 929 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 930 | "dev": true, 931 | "requires": { 932 | "brace-expansion": "^1.1.7" 933 | } 934 | }, 935 | "minimist": { 936 | "version": "1.2.6", 937 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", 938 | "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", 939 | "dev": true 940 | }, 941 | "mkdirp": { 942 | "version": "0.5.4", 943 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", 944 | "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", 945 | "dev": true, 946 | "requires": { 947 | "minimist": "^1.2.5" 948 | } 949 | }, 950 | "mkdirp-classic": { 951 | "version": "0.5.3", 952 | "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", 953 | "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", 954 | "dev": true 955 | }, 956 | "mocha": { 957 | "version": "10.2.0", 958 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", 959 | "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", 960 | "dev": true, 961 | "requires": { 962 | "ansi-colors": "4.1.1", 963 | "browser-stdout": "1.3.1", 964 | "chokidar": "3.5.3", 965 | "debug": "4.3.4", 966 | "diff": "5.0.0", 967 | "escape-string-regexp": "4.0.0", 968 | "find-up": "5.0.0", 969 | "glob": "7.2.0", 970 | "he": "1.2.0", 971 | "js-yaml": "4.1.0", 972 | "log-symbols": "4.1.0", 973 | "minimatch": "5.0.1", 974 | "ms": "2.1.3", 975 | "nanoid": "3.3.3", 976 | "serialize-javascript": "6.0.0", 977 | "strip-json-comments": "3.1.1", 978 | "supports-color": "8.1.1", 979 | "workerpool": "6.2.1", 980 | "yargs": "16.2.0", 981 | "yargs-parser": "20.2.4", 982 | "yargs-unparser": "2.0.0" 983 | }, 984 | "dependencies": { 985 | "argparse": { 986 | "version": "2.0.1", 987 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 988 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 989 | "dev": true 990 | }, 991 | "debug": { 992 | "version": "4.3.4", 993 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 994 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 995 | "dev": true, 996 | "requires": { 997 | "ms": "2.1.2" 998 | }, 999 | "dependencies": { 1000 | "ms": { 1001 | "version": "2.1.2", 1002 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1003 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1004 | "dev": true 1005 | } 1006 | } 1007 | }, 1008 | "escape-string-regexp": { 1009 | "version": "4.0.0", 1010 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 1011 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 1012 | "dev": true 1013 | }, 1014 | "glob": { 1015 | "version": "7.2.0", 1016 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", 1017 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", 1018 | "dev": true, 1019 | "requires": { 1020 | "fs.realpath": "^1.0.0", 1021 | "inflight": "^1.0.4", 1022 | "inherits": "2", 1023 | "minimatch": "^3.0.4", 1024 | "once": "^1.3.0", 1025 | "path-is-absolute": "^1.0.0" 1026 | }, 1027 | "dependencies": { 1028 | "minimatch": { 1029 | "version": "3.1.2", 1030 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1031 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1032 | "dev": true, 1033 | "requires": { 1034 | "brace-expansion": "^1.1.7" 1035 | } 1036 | } 1037 | } 1038 | }, 1039 | "js-yaml": { 1040 | "version": "4.1.0", 1041 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 1042 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 1043 | "dev": true, 1044 | "requires": { 1045 | "argparse": "^2.0.1" 1046 | } 1047 | }, 1048 | "minimatch": { 1049 | "version": "5.0.1", 1050 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", 1051 | "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", 1052 | "dev": true, 1053 | "requires": { 1054 | "brace-expansion": "^2.0.1" 1055 | }, 1056 | "dependencies": { 1057 | "brace-expansion": { 1058 | "version": "2.0.1", 1059 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 1060 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 1061 | "dev": true, 1062 | "requires": { 1063 | "balanced-match": "^1.0.0" 1064 | } 1065 | } 1066 | } 1067 | }, 1068 | "ms": { 1069 | "version": "2.1.3", 1070 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1071 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 1072 | "dev": true 1073 | } 1074 | } 1075 | }, 1076 | "ms": { 1077 | "version": "2.1.1", 1078 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 1079 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", 1080 | "dev": true 1081 | }, 1082 | "mute-stream": { 1083 | "version": "0.0.8", 1084 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", 1085 | "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", 1086 | "dev": true 1087 | }, 1088 | "nanoid": { 1089 | "version": "3.3.3", 1090 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", 1091 | "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", 1092 | "dev": true 1093 | }, 1094 | "napi-build-utils": { 1095 | "version": "1.0.2", 1096 | "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", 1097 | "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", 1098 | "dev": true 1099 | }, 1100 | "node-abi": { 1101 | "version": "3.31.0", 1102 | "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.31.0.tgz", 1103 | "integrity": "sha512-eSKV6s+APenqVh8ubJyiu/YhZgxQpGP66ntzUb3lY1xB9ukSRaGnx0AIxI+IM+1+IVYC1oWobgG5L3Lt9ARykQ==", 1104 | "dev": true, 1105 | "requires": { 1106 | "semver": "^7.3.5" 1107 | }, 1108 | "dependencies": { 1109 | "semver": { 1110 | "version": "7.3.8", 1111 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", 1112 | "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", 1113 | "dev": true, 1114 | "requires": { 1115 | "lru-cache": "^6.0.0" 1116 | } 1117 | } 1118 | } 1119 | }, 1120 | "node-addon-api": { 1121 | "version": "4.3.0", 1122 | "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", 1123 | "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", 1124 | "dev": true 1125 | }, 1126 | "normalize-path": { 1127 | "version": "3.0.0", 1128 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1129 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1130 | "dev": true 1131 | }, 1132 | "nth-check": { 1133 | "version": "2.1.1", 1134 | "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", 1135 | "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", 1136 | "dev": true, 1137 | "requires": { 1138 | "boolbase": "^1.0.0" 1139 | } 1140 | }, 1141 | "object-inspect": { 1142 | "version": "1.12.3", 1143 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", 1144 | "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", 1145 | "dev": true 1146 | }, 1147 | "once": { 1148 | "version": "1.4.0", 1149 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1150 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1151 | "dev": true, 1152 | "requires": { 1153 | "wrappy": "1" 1154 | } 1155 | }, 1156 | "p-limit": { 1157 | "version": "3.1.0", 1158 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 1159 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 1160 | "dev": true, 1161 | "requires": { 1162 | "yocto-queue": "^0.1.0" 1163 | } 1164 | }, 1165 | "p-locate": { 1166 | "version": "5.0.0", 1167 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 1168 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 1169 | "dev": true, 1170 | "requires": { 1171 | "p-limit": "^3.0.2" 1172 | } 1173 | }, 1174 | "parse-semver": { 1175 | "version": "1.1.1", 1176 | "resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz", 1177 | "integrity": "sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==", 1178 | "dev": true, 1179 | "requires": { 1180 | "semver": "^5.1.0" 1181 | } 1182 | }, 1183 | "parse5": { 1184 | "version": "7.1.2", 1185 | "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", 1186 | "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", 1187 | "dev": true, 1188 | "requires": { 1189 | "entities": "^4.4.0" 1190 | } 1191 | }, 1192 | "parse5-htmlparser2-tree-adapter": { 1193 | "version": "7.0.0", 1194 | "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", 1195 | "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", 1196 | "dev": true, 1197 | "requires": { 1198 | "domhandler": "^5.0.2", 1199 | "parse5": "^7.0.0" 1200 | } 1201 | }, 1202 | "path-exists": { 1203 | "version": "4.0.0", 1204 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1205 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 1206 | "dev": true 1207 | }, 1208 | "path-is-absolute": { 1209 | "version": "1.0.1", 1210 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1211 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1212 | "dev": true 1213 | }, 1214 | "path-parse": { 1215 | "version": "1.0.7", 1216 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1217 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1218 | "dev": true 1219 | }, 1220 | "pend": { 1221 | "version": "1.2.0", 1222 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", 1223 | "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", 1224 | "dev": true 1225 | }, 1226 | "picomatch": { 1227 | "version": "2.3.1", 1228 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1229 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1230 | "dev": true 1231 | }, 1232 | "prebuild-install": { 1233 | "version": "7.1.1", 1234 | "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", 1235 | "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", 1236 | "dev": true, 1237 | "requires": { 1238 | "detect-libc": "^2.0.0", 1239 | "expand-template": "^2.0.3", 1240 | "github-from-package": "0.0.0", 1241 | "minimist": "^1.2.3", 1242 | "mkdirp-classic": "^0.5.3", 1243 | "napi-build-utils": "^1.0.1", 1244 | "node-abi": "^3.3.0", 1245 | "pump": "^3.0.0", 1246 | "rc": "^1.2.7", 1247 | "simple-get": "^4.0.0", 1248 | "tar-fs": "^2.0.0", 1249 | "tunnel-agent": "^0.6.0" 1250 | } 1251 | }, 1252 | "pump": { 1253 | "version": "3.0.0", 1254 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 1255 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 1256 | "dev": true, 1257 | "requires": { 1258 | "end-of-stream": "^1.1.0", 1259 | "once": "^1.3.1" 1260 | } 1261 | }, 1262 | "qs": { 1263 | "version": "6.11.0", 1264 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", 1265 | "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", 1266 | "dev": true, 1267 | "requires": { 1268 | "side-channel": "^1.0.4" 1269 | } 1270 | }, 1271 | "randombytes": { 1272 | "version": "2.1.0", 1273 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 1274 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 1275 | "dev": true, 1276 | "requires": { 1277 | "safe-buffer": "^5.1.0" 1278 | } 1279 | }, 1280 | "rc": { 1281 | "version": "1.2.8", 1282 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", 1283 | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", 1284 | "dev": true, 1285 | "requires": { 1286 | "deep-extend": "^0.6.0", 1287 | "ini": "~1.3.0", 1288 | "minimist": "^1.2.0", 1289 | "strip-json-comments": "~2.0.1" 1290 | }, 1291 | "dependencies": { 1292 | "strip-json-comments": { 1293 | "version": "2.0.1", 1294 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 1295 | "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", 1296 | "dev": true 1297 | } 1298 | } 1299 | }, 1300 | "read": { 1301 | "version": "1.0.7", 1302 | "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", 1303 | "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", 1304 | "dev": true, 1305 | "requires": { 1306 | "mute-stream": "~0.0.4" 1307 | } 1308 | }, 1309 | "readable-stream": { 1310 | "version": "3.6.0", 1311 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 1312 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 1313 | "dev": true, 1314 | "requires": { 1315 | "inherits": "^2.0.3", 1316 | "string_decoder": "^1.1.1", 1317 | "util-deprecate": "^1.0.1" 1318 | } 1319 | }, 1320 | "readdirp": { 1321 | "version": "3.6.0", 1322 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 1323 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 1324 | "dev": true, 1325 | "requires": { 1326 | "picomatch": "^2.2.1" 1327 | } 1328 | }, 1329 | "require-directory": { 1330 | "version": "2.1.1", 1331 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 1332 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", 1333 | "dev": true 1334 | }, 1335 | "resolve": { 1336 | "version": "1.17.0", 1337 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", 1338 | "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", 1339 | "dev": true, 1340 | "requires": { 1341 | "path-parse": "^1.0.6" 1342 | } 1343 | }, 1344 | "rimraf": { 1345 | "version": "2.7.1", 1346 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 1347 | "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", 1348 | "dev": true, 1349 | "requires": { 1350 | "glob": "^7.1.3" 1351 | } 1352 | }, 1353 | "safe-buffer": { 1354 | "version": "5.2.1", 1355 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1356 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 1357 | "dev": true 1358 | }, 1359 | "sax": { 1360 | "version": "1.2.4", 1361 | "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", 1362 | "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", 1363 | "dev": true 1364 | }, 1365 | "semver": { 1366 | "version": "5.7.1", 1367 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1368 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 1369 | "dev": true 1370 | }, 1371 | "serialize-javascript": { 1372 | "version": "6.0.0", 1373 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", 1374 | "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", 1375 | "dev": true, 1376 | "requires": { 1377 | "randombytes": "^2.1.0" 1378 | } 1379 | }, 1380 | "side-channel": { 1381 | "version": "1.0.4", 1382 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 1383 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 1384 | "dev": true, 1385 | "requires": { 1386 | "call-bind": "^1.0.0", 1387 | "get-intrinsic": "^1.0.2", 1388 | "object-inspect": "^1.9.0" 1389 | } 1390 | }, 1391 | "simple-concat": { 1392 | "version": "1.0.1", 1393 | "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", 1394 | "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", 1395 | "dev": true 1396 | }, 1397 | "simple-get": { 1398 | "version": "4.0.1", 1399 | "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", 1400 | "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", 1401 | "dev": true, 1402 | "requires": { 1403 | "decompress-response": "^6.0.0", 1404 | "once": "^1.3.1", 1405 | "simple-concat": "^1.0.0" 1406 | } 1407 | }, 1408 | "sprintf-js": { 1409 | "version": "1.0.3", 1410 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 1411 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 1412 | "dev": true 1413 | }, 1414 | "string-width": { 1415 | "version": "4.2.3", 1416 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1417 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1418 | "dev": true, 1419 | "requires": { 1420 | "emoji-regex": "^8.0.0", 1421 | "is-fullwidth-code-point": "^3.0.0", 1422 | "strip-ansi": "^6.0.1" 1423 | } 1424 | }, 1425 | "string_decoder": { 1426 | "version": "1.3.0", 1427 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 1428 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 1429 | "dev": true, 1430 | "requires": { 1431 | "safe-buffer": "~5.2.0" 1432 | } 1433 | }, 1434 | "strip-ansi": { 1435 | "version": "6.0.1", 1436 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1437 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1438 | "dev": true, 1439 | "requires": { 1440 | "ansi-regex": "^5.0.1" 1441 | } 1442 | }, 1443 | "strip-json-comments": { 1444 | "version": "3.1.1", 1445 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 1446 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 1447 | "dev": true 1448 | }, 1449 | "supports-color": { 1450 | "version": "8.1.1", 1451 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 1452 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 1453 | "dev": true, 1454 | "requires": { 1455 | "has-flag": "^4.0.0" 1456 | }, 1457 | "dependencies": { 1458 | "has-flag": { 1459 | "version": "4.0.0", 1460 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1461 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1462 | "dev": true 1463 | } 1464 | } 1465 | }, 1466 | "tar-fs": { 1467 | "version": "2.1.1", 1468 | "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", 1469 | "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", 1470 | "dev": true, 1471 | "requires": { 1472 | "chownr": "^1.1.1", 1473 | "mkdirp-classic": "^0.5.2", 1474 | "pump": "^3.0.0", 1475 | "tar-stream": "^2.1.4" 1476 | } 1477 | }, 1478 | "tar-stream": { 1479 | "version": "2.2.0", 1480 | "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", 1481 | "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", 1482 | "dev": true, 1483 | "requires": { 1484 | "bl": "^4.0.3", 1485 | "end-of-stream": "^1.4.1", 1486 | "fs-constants": "^1.0.0", 1487 | "inherits": "^2.0.3", 1488 | "readable-stream": "^3.1.1" 1489 | } 1490 | }, 1491 | "tmp": { 1492 | "version": "0.2.1", 1493 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", 1494 | "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", 1495 | "dev": true, 1496 | "requires": { 1497 | "rimraf": "^3.0.0" 1498 | }, 1499 | "dependencies": { 1500 | "rimraf": { 1501 | "version": "3.0.2", 1502 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 1503 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 1504 | "dev": true, 1505 | "requires": { 1506 | "glob": "^7.1.3" 1507 | } 1508 | } 1509 | } 1510 | }, 1511 | "to-regex-range": { 1512 | "version": "5.0.1", 1513 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1514 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1515 | "dev": true, 1516 | "requires": { 1517 | "is-number": "^7.0.0" 1518 | } 1519 | }, 1520 | "tslib": { 1521 | "version": "1.13.0", 1522 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", 1523 | "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", 1524 | "dev": true 1525 | }, 1526 | "tslint": { 1527 | "version": "5.20.1", 1528 | "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.1.tgz", 1529 | "integrity": "sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==", 1530 | "dev": true, 1531 | "requires": { 1532 | "@babel/code-frame": "^7.0.0", 1533 | "builtin-modules": "^1.1.1", 1534 | "chalk": "^2.3.0", 1535 | "commander": "^2.12.1", 1536 | "diff": "^4.0.1", 1537 | "glob": "^7.1.1", 1538 | "js-yaml": "^3.13.1", 1539 | "minimatch": "^3.0.4", 1540 | "mkdirp": "^0.5.1", 1541 | "resolve": "^1.3.2", 1542 | "semver": "^5.3.0", 1543 | "tslib": "^1.8.0", 1544 | "tsutils": "^2.29.0" 1545 | }, 1546 | "dependencies": { 1547 | "diff": { 1548 | "version": "4.0.2", 1549 | "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", 1550 | "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", 1551 | "dev": true 1552 | } 1553 | } 1554 | }, 1555 | "tsutils": { 1556 | "version": "2.29.0", 1557 | "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", 1558 | "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", 1559 | "dev": true, 1560 | "requires": { 1561 | "tslib": "^1.8.1" 1562 | } 1563 | }, 1564 | "tunnel": { 1565 | "version": "0.0.6", 1566 | "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", 1567 | "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", 1568 | "dev": true 1569 | }, 1570 | "tunnel-agent": { 1571 | "version": "0.6.0", 1572 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 1573 | "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", 1574 | "dev": true, 1575 | "requires": { 1576 | "safe-buffer": "^5.0.1" 1577 | } 1578 | }, 1579 | "typed-rest-client": { 1580 | "version": "1.8.9", 1581 | "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.9.tgz", 1582 | "integrity": "sha512-uSmjE38B80wjL85UFX3sTYEUlvZ1JgCRhsWj/fJ4rZ0FqDUFoIuodtiVeE+cUqiVTOKPdKrp/sdftD15MDek6g==", 1583 | "dev": true, 1584 | "requires": { 1585 | "qs": "^6.9.1", 1586 | "tunnel": "0.0.6", 1587 | "underscore": "^1.12.1" 1588 | } 1589 | }, 1590 | "typescript": { 1591 | "version": "3.9.7", 1592 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", 1593 | "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==", 1594 | "dev": true 1595 | }, 1596 | "uc.micro": { 1597 | "version": "1.0.6", 1598 | "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", 1599 | "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", 1600 | "dev": true 1601 | }, 1602 | "underscore": { 1603 | "version": "1.13.6", 1604 | "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", 1605 | "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", 1606 | "dev": true 1607 | }, 1608 | "url-join": { 1609 | "version": "4.0.1", 1610 | "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", 1611 | "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", 1612 | "dev": true 1613 | }, 1614 | "util-deprecate": { 1615 | "version": "1.0.2", 1616 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1617 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 1618 | "dev": true 1619 | }, 1620 | "vsce": { 1621 | "version": "2.15.0", 1622 | "resolved": "https://registry.npmjs.org/vsce/-/vsce-2.15.0.tgz", 1623 | "integrity": "sha512-P8E9LAZvBCQnoGoizw65JfGvyMqNGlHdlUXD1VAuxtvYAaHBKLBdKPnpy60XKVDAkQCfmMu53g+gq9FM+ydepw==", 1624 | "dev": true, 1625 | "requires": { 1626 | "azure-devops-node-api": "^11.0.1", 1627 | "chalk": "^2.4.2", 1628 | "cheerio": "^1.0.0-rc.9", 1629 | "commander": "^6.1.0", 1630 | "glob": "^7.0.6", 1631 | "hosted-git-info": "^4.0.2", 1632 | "keytar": "^7.7.0", 1633 | "leven": "^3.1.0", 1634 | "markdown-it": "^12.3.2", 1635 | "mime": "^1.3.4", 1636 | "minimatch": "^3.0.3", 1637 | "parse-semver": "^1.1.1", 1638 | "read": "^1.0.7", 1639 | "semver": "^5.1.0", 1640 | "tmp": "^0.2.1", 1641 | "typed-rest-client": "^1.8.4", 1642 | "url-join": "^4.0.1", 1643 | "xml2js": "^0.4.23", 1644 | "yauzl": "^2.3.1", 1645 | "yazl": "^2.2.2" 1646 | }, 1647 | "dependencies": { 1648 | "commander": { 1649 | "version": "6.2.1", 1650 | "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", 1651 | "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", 1652 | "dev": true 1653 | } 1654 | } 1655 | }, 1656 | "vscode-test": { 1657 | "version": "1.4.0", 1658 | "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-1.4.0.tgz", 1659 | "integrity": "sha512-Jt7HNGvSE0+++Tvtq5wc4hiXLIr2OjDShz/gbAfM/mahQpy4rKBnmOK33D+MR67ATWviQhl+vpmU3p/qwSH/Pg==", 1660 | "dev": true, 1661 | "requires": { 1662 | "http-proxy-agent": "^2.1.0", 1663 | "https-proxy-agent": "^2.2.4", 1664 | "rimraf": "^2.6.3" 1665 | } 1666 | }, 1667 | "workerpool": { 1668 | "version": "6.2.1", 1669 | "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", 1670 | "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", 1671 | "dev": true 1672 | }, 1673 | "wrap-ansi": { 1674 | "version": "7.0.0", 1675 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 1676 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 1677 | "dev": true, 1678 | "requires": { 1679 | "ansi-styles": "^4.0.0", 1680 | "string-width": "^4.1.0", 1681 | "strip-ansi": "^6.0.0" 1682 | }, 1683 | "dependencies": { 1684 | "ansi-styles": { 1685 | "version": "4.3.0", 1686 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1687 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1688 | "dev": true, 1689 | "requires": { 1690 | "color-convert": "^2.0.1" 1691 | } 1692 | }, 1693 | "color-convert": { 1694 | "version": "2.0.1", 1695 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1696 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1697 | "dev": true, 1698 | "requires": { 1699 | "color-name": "~1.1.4" 1700 | } 1701 | }, 1702 | "color-name": { 1703 | "version": "1.1.4", 1704 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1705 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1706 | "dev": true 1707 | } 1708 | } 1709 | }, 1710 | "wrappy": { 1711 | "version": "1.0.2", 1712 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1713 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 1714 | "dev": true 1715 | }, 1716 | "xml2js": { 1717 | "version": "0.4.23", 1718 | "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", 1719 | "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", 1720 | "dev": true, 1721 | "requires": { 1722 | "sax": ">=0.6.0", 1723 | "xmlbuilder": "~11.0.0" 1724 | } 1725 | }, 1726 | "xmlbuilder": { 1727 | "version": "11.0.1", 1728 | "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", 1729 | "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", 1730 | "dev": true 1731 | }, 1732 | "y18n": { 1733 | "version": "5.0.8", 1734 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 1735 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 1736 | "dev": true 1737 | }, 1738 | "yallist": { 1739 | "version": "4.0.0", 1740 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 1741 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 1742 | "dev": true 1743 | }, 1744 | "yargs": { 1745 | "version": "16.2.0", 1746 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", 1747 | "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", 1748 | "dev": true, 1749 | "requires": { 1750 | "cliui": "^7.0.2", 1751 | "escalade": "^3.1.1", 1752 | "get-caller-file": "^2.0.5", 1753 | "require-directory": "^2.1.1", 1754 | "string-width": "^4.2.0", 1755 | "y18n": "^5.0.5", 1756 | "yargs-parser": "^20.2.2" 1757 | } 1758 | }, 1759 | "yargs-parser": { 1760 | "version": "20.2.4", 1761 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", 1762 | "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", 1763 | "dev": true 1764 | }, 1765 | "yargs-unparser": { 1766 | "version": "2.0.0", 1767 | "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", 1768 | "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", 1769 | "dev": true, 1770 | "requires": { 1771 | "camelcase": "^6.0.0", 1772 | "decamelize": "^4.0.0", 1773 | "flat": "^5.0.2", 1774 | "is-plain-obj": "^2.1.0" 1775 | } 1776 | }, 1777 | "yauzl": { 1778 | "version": "2.10.0", 1779 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", 1780 | "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", 1781 | "dev": true, 1782 | "requires": { 1783 | "buffer-crc32": "~0.2.3", 1784 | "fd-slicer": "~1.1.0" 1785 | } 1786 | }, 1787 | "yazl": { 1788 | "version": "2.5.1", 1789 | "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", 1790 | "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", 1791 | "dev": true, 1792 | "requires": { 1793 | "buffer-crc32": "~0.2.3" 1794 | } 1795 | }, 1796 | "yocto-queue": { 1797 | "version": "0.1.0", 1798 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 1799 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 1800 | "dev": true 1801 | } 1802 | } 1803 | } 1804 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "language-pde", 3 | "displayName": "Processing Language", 4 | "description": "Processing Language Support for VSCode", 5 | "version": "1.4.6", 6 | "publisher": "Tobiah", 7 | "engines": { 8 | "vscode": "^1.48.0" 9 | }, 10 | "homepage": "https://github.com/TobiahZ/processing-vscode", 11 | "repository": { 12 | "type": "git", 13 | "url": "https://github.com/TobiahZ/processing-vscode.git" 14 | }, 15 | "categories": [ 16 | "Programming Languages", 17 | "Snippets" 18 | ], 19 | "bugs": "https://github.com/TobiahZ/processing-vscode/issues", 20 | "license": "SEE LICENSE IN LICENSE.txt", 21 | "keywords": [ 22 | "processing", 23 | "pde", 24 | "language", 25 | "snippets", 26 | "java", 27 | "multi-root ready" 28 | ], 29 | "activationEvents": [ 30 | "onCommand:processing.CreateTaskFile", 31 | "onCommand:processing.RunTaskFile", 32 | "onCommand:processing.OpenExtensionDocumentation", 33 | "onCommand:processing.OpenDocs", 34 | "onCommand:processing.SearchWebsite" 35 | ], 36 | "main": "./out/extension", 37 | "contributes": { 38 | "commands": [ 39 | { 40 | "command": "processing.CreateTaskFile", 41 | "title": "Processing: Create Task File" 42 | }, 43 | { 44 | "command": "processing.RunTaskFile", 45 | "title": "Processing: Run Processing Project" 46 | }, 47 | { 48 | "command": "processing.OpenExtensionDocumentation", 49 | "title": "Processing: Open Extension Documentation" 50 | }, 51 | { 52 | "command": "processing.OpenDocs", 53 | "title": "Processing: Open Documentation for Selection" 54 | }, 55 | { 56 | "command": "processing.SearchWebsite", 57 | "title": "Processing: Search Processing Website" 58 | } 59 | ], 60 | "languages": [ 61 | { 62 | "id": "pde", 63 | "aliases": [ 64 | "Processing", 65 | "pde" 66 | ], 67 | "extensions": [ 68 | ".pde" 69 | ], 70 | "configuration": "./pde.configuration.json" 71 | } 72 | ], 73 | "grammars": [ 74 | { 75 | "language": "pde", 76 | "scopeName": "source.pde", 77 | "path": "./syntaxes/pde.tmLanguage" 78 | } 79 | ], 80 | "snippets": [ 81 | { 82 | "language": "pde", 83 | "path": "./snippets/snippets.json" 84 | } 85 | ], 86 | "menus": { 87 | "editor/context": [ 88 | { 89 | "when": "editorHasSelection && editorLangId == 'pde'", 90 | "command": "processing.OpenDocs", 91 | "group": "navigation@1" 92 | } 93 | ] 94 | }, 95 | "configuration": { 96 | "type": "object", 97 | "title": "Processing", 98 | "properties": { 99 | "processing.path": { 100 | "type": "string", 101 | "default": "processing-java", 102 | "description": "Path to Processing. Leave default if you've added processing to your path, otherwise enter the path to processing-java here. Example: 'C:\\Program Files\\processing-3.0.1\\processing-java' for Windows" 103 | }, 104 | "processing.docs": { 105 | "type": "string", 106 | "default": "processing.org", 107 | "enum": [ 108 | "processing.org", 109 | "p5js.org" 110 | ], 111 | "enumDescriptions": [ 112 | "Use processing.org for documentation", 113 | "Use p5js for documentation" 114 | ], 115 | "description": "Which documentation should this extension use?" 116 | }, 117 | "processing.search": { 118 | "type": "string", 119 | "default": "Google", 120 | "enum": [ 121 | "Google", 122 | "DuckDuckGo" 123 | ], 124 | "enumDescriptions": [ 125 | "Use Google to search documentation", 126 | "Use DuckDuckGo to search documentation" 127 | ], 128 | "description": "Which search engine should this extension use?" 129 | } 130 | } 131 | } 132 | }, 133 | "scripts": { 134 | "vscode:prepublish": "npm run compile", 135 | "compile": "tsc -p ./", 136 | "watch": "tsc -watch -p ./", 137 | "pretest": "npm run compile", 138 | "test": "node ./out/test/runTest.js", 139 | "deploy": "vsce publish" 140 | }, 141 | "devDependencies": { 142 | "@types/glob": "^7.1.3", 143 | "@types/mocha": "^5.2.6", 144 | "@types/node": "^10.17.29", 145 | "@types/vscode": "^1.48.0", 146 | "glob": "^7.1.6", 147 | "mocha": "^10.2.0", 148 | "tslint": "^5.20.1", 149 | "typescript": "^3.9.7", 150 | "vsce": "^2.15.0", 151 | "vscode-test": "^1.4.0" 152 | }, 153 | "icon": "processing.png" 154 | } 155 | -------------------------------------------------------------------------------- /pde.configuration.json: -------------------------------------------------------------------------------- 1 | { 2 | "comments": { 3 | // symbol used for single line comment. Remove this entry if your language does not support line comments 4 | "lineComment": "//", 5 | // symbols used for start and end a block comment. Remove this entry if your language does not support block comments 6 | "blockComment": [ "/*", "*/" ] 7 | }, 8 | // symbols used as brackets 9 | "brackets": [ 10 | ["{", "}"], 11 | ["[", "]"], 12 | ["(", ")"] 13 | ] 14 | } -------------------------------------------------------------------------------- /processing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvinZarlez/processing-vscode/7520971e96958e251b6fe139963e64b73522d8d0/processing.png -------------------------------------------------------------------------------- /snippets/snippets.json: -------------------------------------------------------------------------------- 1 | { 2 | "@param": { 3 | "prefix": "@param", 4 | "body": "@param ${1:parameter} ${2:description}", 5 | "description": "@param", 6 | "scope": "source.pde" 7 | }, 8 | "@private": { 9 | "prefix": "@private", 10 | "body": "@private", 11 | "description": "@private", 12 | "scope": "source.pde" 13 | }, 14 | "@public": { 15 | "prefix": "@public", 16 | "body": "@private", 17 | "description": "@public", 18 | "scope": "source.pde" 19 | }, 20 | "@return": { 21 | "prefix": "@return", 22 | "body": "@return ${1:parameter} ${2:description}", 23 | "description": "@return", 24 | "scope": "source.pde" 25 | }, 26 | "abs": { 27 | "prefix": "abs", 28 | "body": "abs(${1:value});", 29 | "description": "abs", 30 | "scope": "source.pde" 31 | }, 32 | "acos": { 33 | "prefix": "acos", 34 | "body": "acos(${1:value});", 35 | "description": "acos", 36 | "scope": "source.pde" 37 | }, 38 | "alpha": { 39 | "prefix": "alpha", 40 | "body": "alpha(${1:color});", 41 | "description": "alpha", 42 | "scope": "source.pde" 43 | }, 44 | "ambient": { 45 | "prefix": "ambient", 46 | "body": "ambient(${8:${3:value1}, ${4:value2}, ${5:value3}});", 47 | "description": "ambient", 48 | "scope": "source.pde" 49 | }, 50 | "ambientLight": { 51 | "prefix": "ambientLight", 52 | "body": "ambientLight(${1:v1}, ${2:v2}, ${3:v3}${7:, ${4:x}, ${5:y}, ${6:z}});", 53 | "description": "ambientLight", 54 | "scope": "source.pde" 55 | }, 56 | "append": { 57 | "prefix": "append", 58 | "body": "append(${1:array}, ${2:element});", 59 | "description": "append", 60 | "scope": "source.pde" 61 | }, 62 | "arc": { 63 | "prefix": "arc", 64 | "body": "arc(${1:x}, ${2:y}, ${3:width}, ${4:height}, ${5:start}, ${6:stop});", 65 | "description": "arc", 66 | "scope": "source.pde" 67 | }, 68 | "Array": { 69 | "prefix": "Array", 70 | "body": "${1:int}[] ${2:numbers} ${6:= new $1[${3:length}]};", 71 | "description": "Array", 72 | "scope": "source.pde" 73 | }, 74 | "arrayCopy": { 75 | "prefix": "arrayCopy", 76 | "body": "arrayCopy(${1:src}, ${2:dest}, ${4:, ${3:length}});", 77 | "description": "arrayCopy", 78 | "scope": "source.pde" 79 | }, 80 | "ArrayList": { 81 | "prefix": "ArrayList", 82 | "body": "ArrayList<${1:String}> ${2:arraylist} = new ArrayList<$1>();", 83 | "description": "ArrayList", 84 | "scope": "source.pde" 85 | }, 86 | "asin": { 87 | "prefix": "asin", 88 | "body": "asin(${1:value});", 89 | "description": "asin", 90 | "scope": "source.pde" 91 | }, 92 | "atan": { 93 | "prefix": "atan", 94 | "body": "atan(${1:value});", 95 | "description": "atan", 96 | "scope": "source.pde" 97 | }, 98 | "atan2": { 99 | "prefix": "atan2", 100 | "body": "atan2(${1:y},${2:x});", 101 | "description": "atan2", 102 | "scope": "source.pde" 103 | }, 104 | "background_grey_alpha": { 105 | "prefix": "background_grey_alpha", 106 | "body": "background(${1:grey}, ${2:alpha});", 107 | "description": "background grey alpha", 108 | "scope": "source.pde" 109 | }, 110 | "background_grey": { 111 | "prefix": "background_grey", 112 | "body": "background(${1:grey});", 113 | "description": "background grey", 114 | "scope": "source.pde" 115 | }, 116 | "background_rgb": { 117 | "prefix": "background_rgb", 118 | "body": "background(${1:red}, ${2:green}, ${3:blue});", 119 | "description": "background rgb", 120 | "scope": "source.pde" 121 | }, 122 | "background_rgba": { 123 | "prefix": "background_rgba", 124 | "body": "background(${1:red}, ${2:green}, ${3:blue}, ${6:alpha});", 125 | "description": "background rgba", 126 | "scope": "source.pde" 127 | }, 128 | "background4": { 129 | "prefix": "background", 130 | "body": "background(${8:${3:value1}, ${4:value2}, ${5:value3}${7:, ${6:alpha}}});", 131 | "description": "background", 132 | "scope": "source.pde" 133 | }, 134 | "beginCamera": { 135 | "prefix": "beginCamera", 136 | "body": "beginCamera();", 137 | "description": "beginCamera", 138 | "scope": "source.pde" 139 | }, 140 | "beginGL": { 141 | "prefix": "beginGL", 142 | "body": "pgl.beginGL();\n$1\npgl.endGL();", 143 | "description": "beginGL", 144 | "scope": "source.pde" 145 | }, 146 | "beginRecord": { 147 | "prefix": "beginRecord", 148 | "body": "beginRecord(${1:renderer}, ${2:filename});", 149 | "description": "beginRecord", 150 | "scope": "source.pde" 151 | }, 152 | "beginShape": { 153 | "prefix": "beginShape", 154 | "body": "beginShape(${1:kind});", 155 | "description": "beginShape", 156 | "scope": "source.pde" 157 | }, 158 | "bezier": { 159 | "prefix": "bezier", 160 | "body": "bezier(${1:x1}, ${2:y1}, ${3:cx1}, ${4:cy1}, ${5:cx2}, ${6:cy2}, ${7:x2}, ${8:y2});", 161 | "description": "bezier", 162 | "scope": "source.pde" 163 | }, 164 | "bezier3D": { 165 | "prefix": "bezier3D", 166 | "body": "bezier(${1:x1}, ${2:y1}, ${3:z1}, ${4:cx1}, ${5:cy1}, ${6:cz1}, ${7:cx2}, ${8:cy2}, ${9:cz2}, ${10:x2}, ${11:y2}, ${12:z2});", 167 | "description": "bezier3D", 168 | "scope": "source.pde" 169 | }, 170 | "bezierDetail": { 171 | "prefix": "bezierDetail", 172 | "body": "bezierDetail(${1:detail});", 173 | "description": "bezierDetail", 174 | "scope": "source.pde" 175 | }, 176 | "bezierPoint": { 177 | "prefix": "bezierPoint", 178 | "body": "bezierPoint(${1:a}, ${1:b}, ${1:c}, ${1:d}, ${1:t});", 179 | "description": "bezierPoint", 180 | "scope": "source.pde" 181 | }, 182 | "bezierTangent": { 183 | "prefix": "bezierTangent", 184 | "body": "bezierTangent(${1:a}, ${1:b}, ${1:c}, ${1:d}, ${1:t});", 185 | "description": "bezierTangent", 186 | "scope": "source.pde" 187 | }, 188 | "bezierVertex_3D": { 189 | "prefix": "bezierVertex_3D", 190 | "body": "bezierVertex(${1:cx1}, ${2:cy1}, ${3:cz1}, ${4:cx2}, ${5:cy2}, ${6:cz2}, ${7:x}, ${8:y}, ${9:z});", 191 | "description": "bezierVertex 3D", 192 | "scope": "source.pde" 193 | }, 194 | "bezierVertex": { 195 | "prefix": "bezierVertex", 196 | "body": "bezierVertex(${1:cx1}, ${2:cy1}, ${3:cx2}, ${4:cy2}, ${5:x}, ${6:y});", 197 | "description": "bezierVertex", 198 | "scope": "source.pde" 199 | }, 200 | "binary": { 201 | "prefix": "binary", 202 | "body": "binary(${3:value}${5:, ${4:digits}});", 203 | "description": "binary", 204 | "scope": "source.pde" 205 | }, 206 | "blue": { 207 | "prefix": "blue", 208 | "body": "blue(${1:color});", 209 | "description": "blue", 210 | "scope": "source.pde" 211 | }, 212 | "boolean": { 213 | "prefix": "boolean", 214 | "body": "boolean ${1:b} ${6:= ${3:true}};", 215 | "description": "boolean", 216 | "scope": "source.pde" 217 | }, 218 | "box": { 219 | "prefix": "box", 220 | "body": "box(${4:${1:width}, ${2:height}, ${3:depth}});", 221 | "description": "box", 222 | "scope": "source.pde" 223 | }, 224 | "break": { 225 | "prefix": "break", 226 | "body": "break ${1:label};", 227 | "description": "break", 228 | "scope": "source.pde" 229 | }, 230 | "brightness": { 231 | "prefix": "brightness", 232 | "body": "brightness(${1:color});", 233 | "description": "brightness", 234 | "scope": "source.pde" 235 | }, 236 | "byte": { 237 | "prefix": "byte", 238 | "body": "byte ${1:b} ${6:= ${3:127}};", 239 | "description": "byte", 240 | "scope": "source.pde" 241 | }, 242 | "camera1": { 243 | "prefix": "camera", 244 | "body": "camera(${10:${1:eyeX}, ${2:eyeY}, ${3:eyeZ}, ${4:centerX}, ${5:centerY}, ${6:centerZ}, ${7:upX}, ${8:upY}, ${9:upZ}});", 245 | "description": "camera", 246 | "scope": "source.pde" 247 | }, 248 | "case": { 249 | "prefix": "case", 250 | "body": "case ${1:expression} :\n\t$0\nbreak;\t", 251 | "description": "case", 252 | "scope": "source.pde" 253 | }, 254 | "catch": { 255 | "prefix": "catch", 256 | "body": "catch (${1:Exception} e) {\n\t$0\n}", 257 | "description": "catch", 258 | "scope": "source.pde" 259 | }, 260 | "ceil": { 261 | "prefix": "ceil", 262 | "body": "ceil(${1:value});", 263 | "description": "ceil", 264 | "scope": "source.pde" 265 | }, 266 | "char": { 267 | "prefix": "char", 268 | "body": "char ${1:m} ${6:= \"${3:char}\"};", 269 | "description": "char", 270 | "scope": "source.pde" 271 | }, 272 | "class": { 273 | "prefix": "class", 274 | "body": "${1:public }class ${2:${TM_FILENAME/(.*?)(\\..+)/$1/}} ${3:extends} {\n\n\tpublic $2 (${4:arguments}) {\n\t\t${0}\n\t}\n\n}\n", 275 | "description": "class", 276 | "scope": "source.pde" 277 | }, 278 | "color": { 279 | "prefix": "color", 280 | "body": "color ${1:c} ${6:= color(${3:value1}, ${4:value2}, ${5:value3})};", 281 | "description": "color", 282 | "scope": "source.pde" 283 | }, 284 | "concat": { 285 | "prefix": "concat", 286 | "body": "concat(${1:array1}, ${2:array2});", 287 | "description": "concat", 288 | "scope": "source.pde" 289 | }, 290 | "const": { 291 | "prefix": "const", 292 | "body": "static final ${1:Object} ${2:VAR_NAM} = $0;", 293 | "description": "const", 294 | "scope": "source.pde" 295 | }, 296 | "constrain": { 297 | "prefix": "constrain", 298 | "body": "constrain(${1:value}, ${2:min}, ${3:max});", 299 | "description": "constrain", 300 | "scope": "source.pde" 301 | }, 302 | "copy": { 303 | "prefix": "copy", 304 | "body": "copy(${10:${9:srcImg}, }${1:x}, ${2:y}, ${3:width}, ${4:height}, ${5:dx}, ${6:dy}, ${7:dwidth}, ${8:dheight});", 305 | "description": "copy", 306 | "scope": "source.pde" 307 | }, 308 | "cos": { 309 | "prefix": "cos", 310 | "body": "cos(${1:rad});", 311 | "description": "cos", 312 | "scope": "source.pde" 313 | }, 314 | "createReader": { 315 | "prefix": "createReader", 316 | "body": "createReader(${1:filename});", 317 | "description": "createReader", 318 | "scope": "source.pde" 319 | }, 320 | "createShape": { 321 | "prefix": "createShape", 322 | "body": "createShape(${1:type});", 323 | "description": "createShape", 324 | "scope": "source.pde" 325 | }, 326 | "createWriter": { 327 | "prefix": "createWriter", 328 | "body": "createWriter(${1:filename});", 329 | "description": "createWriter", 330 | "scope": "source.pde" 331 | }, 332 | "curve_3D": { 333 | "prefix": "curve_3D", 334 | "body": "curve(${1:x1}, ${2:y1}, ${3:z1}, ${4:x2}, ${5:y2}, ${6:z2}, ${7:x3}, ${8:y3}, ${9:z3}, ${10:x4}, ${11:y4}, ${12:z4});", 335 | "description": "curve 3D", 336 | "scope": "source.pde" 337 | }, 338 | "curve1": { 339 | "prefix": "curve", 340 | "body": "curve(${1:x1}, ${2:y1}, ${3:x2}, ${4:y2}, ${5:x3}, ${6:y3}, ${7:x4}, ${8:y4});", 341 | "description": "curve", 342 | "scope": "source.pde" 343 | }, 344 | "curveDetail": { 345 | "prefix": "curveDetail", 346 | "body": "curveDetail(${1:detail});", 347 | "description": "curveDetail", 348 | "scope": "source.pde" 349 | }, 350 | "curvePoint": { 351 | "prefix": "curvePoint", 352 | "body": "curvePoint(${1:a}, ${1:b}, ${1:c}, ${1:d}, ${1:t});", 353 | "description": "curvePoint", 354 | "scope": "source.pde" 355 | }, 356 | "curveTightness": { 357 | "prefix": "curveTightness", 358 | "body": "curveTightness(${1:squishy});", 359 | "description": "curveTightness", 360 | "scope": "source.pde" 361 | }, 362 | "curveVertex_3D": { 363 | "prefix": "curveVertex_3D", 364 | "body": "curveVertex(${1:x}, ${2:y}, ${3:z});", 365 | "description": "curveVertex 3D", 366 | "scope": "source.pde" 367 | }, 368 | "curveVertex1": { 369 | "prefix": "curveVertex", 370 | "body": "curveVertex(${1:x}, ${2:y});", 371 | "description": "curveVertex", 372 | "scope": "source.pde" 373 | }, 374 | "default": { 375 | "prefix": "default", 376 | "body": "default :\n\t$0\nbreak;\t", 377 | "description": "default", 378 | "scope": "source.pde" 379 | }, 380 | "degrees": { 381 | "prefix": "degrees", 382 | "body": "degrees(${1:rad});", 383 | "description": "degrees", 384 | "scope": "source.pde" 385 | }, 386 | "directionalLight": { 387 | "prefix": "directionalLight", 388 | "body": "directionalLight(${1:v1}, ${2:v2}, ${3:v3}, ${4:nx}, ${5:ny}, ${6:nz});", 389 | "description": "directionalLight", 390 | "scope": "source.pde" 391 | }, 392 | "dist_3D": { 393 | "prefix": "dist_3D", 394 | "body": "dist(${1:x1}, ${2:y1}, ${3:z1}, ${4:x2}, ${5:y2}, ${6:z2});", 395 | "description": "dist 3D", 396 | "scope": "source.pde" 397 | }, 398 | "dist1": { 399 | "prefix": "dist", 400 | "body": "dist(${1:x1}, ${2:y1}, ${4:x2}, ${5:y2});", 401 | "description": "dist", 402 | "scope": "source.pde" 403 | }, 404 | "doc_-_class": { 405 | "prefix": "doc_-_class", 406 | "body": "/**\n * ${1:Description}\n *\n *\t@author ${2:$TM_FULLNAME}\n *\t@since ${3:`date +%d.%m.%Y`}\n */", 407 | "description": "doc - class", 408 | "scope": "source.pde" 409 | }, 410 | "doc_-_comment": { 411 | "prefix": "doc_-_comment", 412 | "body": "/**\n *\t${1:@private}$0\n */", 413 | "description": "doc - comment", 414 | "scope": "source.pde" 415 | }, 416 | "ellipse": { 417 | "prefix": "ellipse", 418 | "body": "ellipse(${1:x}, ${2:y}, ${3:width}, ${4:height});", 419 | "description": "ellipse", 420 | "scope": "source.pde" 421 | }, 422 | "ellipseMode": { 423 | "prefix": "ellipseMode", 424 | "body": "ellipseMode(${1:CENTER});", 425 | "description": "ellipseMode", 426 | "scope": "source.pde" 427 | }, 428 | "else_if": { 429 | "prefix": "else_if", 430 | "body": "else if ($1) {\n\t$0\n}", 431 | "description": "else if", 432 | "scope": "source.pde" 433 | }, 434 | "else1": { 435 | "prefix": "else", 436 | "body": "else {\n\t$0\n}", 437 | "description": "else", 438 | "scope": "source.pde" 439 | }, 440 | "emissive": { 441 | "prefix": "emissive", 442 | "body": "emissive(${8:${3:value1}, ${4:value2}, ${5:value3}});", 443 | "description": "emissive", 444 | "scope": "source.pde" 445 | }, 446 | "endCamera": { 447 | "prefix": "endCamera", 448 | "body": "endCamera();", 449 | "description": "endCamera", 450 | "scope": "source.pde" 451 | }, 452 | "endRecord": { 453 | "prefix": "endRecord", 454 | "body": "endRecord();", 455 | "description": "endRecord", 456 | "scope": "source.pde" 457 | }, 458 | "endShape": { 459 | "prefix": "endShape", 460 | "body": "endShape(${1:mode});", 461 | "description": "endShape", 462 | "scope": "source.pde" 463 | }, 464 | "exp": { 465 | "prefix": "exp", 466 | "body": "exp(${1:value});", 467 | "description": "exp", 468 | "scope": "source.pde" 469 | }, 470 | "expand": { 471 | "prefix": "expand", 472 | "body": "expand(${1:array}${3:, ${2:newSize}});", 473 | "description": "expand", 474 | "scope": "source.pde" 475 | }, 476 | "fill_grey_alpha": { 477 | "prefix": "fill_grey_alpha", 478 | "body": "fill(${1:grey}, ${2:alpha});", 479 | "description": "fill grey alpha", 480 | "scope": "source.pde" 481 | }, 482 | "fill_grey": { 483 | "prefix": "fill_grey", 484 | "body": "fill(${1:grey});", 485 | "description": "fill grey", 486 | "scope": "source.pde" 487 | }, 488 | "fill_rgb": { 489 | "prefix": "fill_rgb", 490 | "body": "fill(${1:red}, ${2:green}, ${3:blue});", 491 | "description": "fill rgb", 492 | "scope": "source.pde" 493 | }, 494 | "fill_rgba": { 495 | "prefix": "fill_rgba", 496 | "body": "fill(${1:red}, ${2:green}, ${3:blue}, ${6:alpha});", 497 | "description": "fill rgba", 498 | "scope": "source.pde" 499 | }, 500 | "fill4": { 501 | "prefix": "fill", 502 | "body": "fill(${8:${3:value1}, ${4:value2}, ${5:value3}${7:, ${6:alpha}}});", 503 | "description": "fill", 504 | "scope": "source.pde" 505 | }, 506 | "float": { 507 | "prefix": "float", 508 | "body": "float ${1:f} ${6:= ${3:0.0}};", 509 | "description": "float", 510 | "scope": "source.pde" 511 | }, 512 | "floor": { 513 | "prefix": "floor", 514 | "body": "floor(${1:value});", 515 | "description": "floor", 516 | "scope": "source.pde" 517 | }, 518 | "focused": { 519 | "prefix": "focused", 520 | "body": "focused", 521 | "description": "focused", 522 | "scope": "source.pde" 523 | }, 524 | "for_in": { 525 | "prefix": "for_in", 526 | "body": "for (${1:Object} ${2:o} : ${3:array}) {\n\t$0\n}", 527 | "description": "for in", 528 | "scope": "source.pde" 529 | }, 530 | "for1": { 531 | "prefix": "for", 532 | "body": "for (int ${1:i} = ${2:0}; ${1:i} < ${3:len}; ++${1:i}) {\n\t$0\n}", 533 | "description": "for", 534 | "scope": "source.pde" 535 | }, 536 | "frameCount": { 537 | "prefix": "frameCount", 538 | "body": "frameCount", 539 | "description": "frameCount", 540 | "scope": "source.pde" 541 | }, 542 | "frameRate_(debug)": { 543 | "prefix": "frameRate_(debug)", 544 | "body": "frameRate", 545 | "description": "frameRate (debug)", 546 | "scope": "source.pde" 547 | }, 548 | "frameRate_(set)": { 549 | "prefix": "frameRate_(set)", 550 | "body": "frameRate($0);", 551 | "description": "frameRate (set)", 552 | "scope": "source.pde" 553 | }, 554 | "frustum": { 555 | "prefix": "frustum", 556 | "body": "frustrum(${7:${1:left}, ${2:right}, ${3:bottom}, ${4:top}, ${5:near}, ${6:far}});", 557 | "description": "frustum", 558 | "scope": "source.pde" 559 | }, 560 | "function": { 561 | "prefix": "function", 562 | "body": "${1:void} ${2:name}($3) {\n\t$0${1/void$|(.+)/(?1:return null;)/}\n}", 563 | "description": "function", 564 | "scope": "source.pde" 565 | }, 566 | "get_pixel": { 567 | "prefix": "get_pixel", 568 | "body": "get(${6:${1:x}, ${2:y}${5:, ${3:width}, ${4:height}}});", 569 | "description": "get pixel", 570 | "scope": "source.pde" 571 | }, 572 | "get1": { 573 | "prefix": "get", 574 | "body": "public ${1:String} get${2/./\\u$0/}() {\n return ${2:fieldName};\n}\n", 575 | "description": "get", 576 | "scope": "source.pde" 577 | }, 578 | "glBindBuffer": { 579 | "prefix": "glBindBuffer", 580 | "body": "${2:// A buffer ID of zero unbinds a buffer object}\ngl.glBindBuffer(GL.GL_ARRAY_BUFFER, ${1:0});", 581 | "description": "glBindBuffer", 582 | "scope": "source.pde" 583 | }, 584 | "glCallList": { 585 | "prefix": "glCallList", 586 | "body": "// execute a display list\ngl.glCallList(${1:list});", 587 | "description": "glCallList", 588 | "scope": "source.pde" 589 | }, 590 | "glClear": { 591 | "prefix": "glClear", 592 | "body": "gl.glClear(${1:GL.GL_COLOR_BUFFER_BIT}${3: | ${2:GL.GL_DEPTH_BUFFER_BIT}});", 593 | "description": "glClear", 594 | "scope": "source.pde" 595 | }, 596 | "glClearColor": { 597 | "prefix": "glClearColor", 598 | "body": "gl.glClearColor(${1:red}, ${2:green}, ${3:blue}, ${4:alpha});", 599 | "description": "glClearColor", 600 | "scope": "source.pde" 601 | }, 602 | "glColor3f": { 603 | "prefix": "glColor3f", 604 | "body": "gl.glColor3f(${1:red}, ${2:green}, ${3:blue});", 605 | "description": "glColor3f", 606 | "scope": "source.pde" 607 | }, 608 | "glColor4f": { 609 | "prefix": "glColor4f", 610 | "body": "gl.glColor4f(${1:red}, ${2:green}, ${3:blue}, ${4:alpha});", 611 | "description": "glColor4f", 612 | "scope": "source.pde" 613 | }, 614 | "glDeleteBuffers": { 615 | "prefix": "glDeleteBuffers", 616 | "body": "${3:// Parameters are the same for glGenBuffers}\ngl.glDeleteBuffers(${1:4}, ${2:bufferObjects});", 617 | "description": "glDeleteBuffers", 618 | "scope": "source.pde" 619 | }, 620 | "glDepthMask": { 621 | "prefix": "glDepthMask", 622 | "body": "// enable or disable writing into the depth buffer\ngl.glDepthMask(${1:flag});", 623 | "description": "glDepthMask", 624 | "scope": "source.pde" 625 | }, 626 | "glFlush": { 627 | "prefix": "glFlush", 628 | "body": "// Empties buffers. Call this when all previous issues commands completed\ngl.glFlush();", 629 | "description": "glFlush", 630 | "scope": "source.pde" 631 | }, 632 | "glGenBuffers": { 633 | "prefix": "glGenBuffers", 634 | "body": "// import java.nio.IntBuffer;\n// import java.nio.FloatBuffer;\n// import com.sun.opengl.util.BufferUtil;\n\n// You might need to create four buffers to store vertext data, normal data, texture coordinate data, and indices in vertex arrays\nIntBuffer bufferObjects = IntBuffer.allocate(${1:4}); \ngl.glGenBuffers($1, bufferObjects);\n\nint vertexCount = ${2:3};\nint numCoordinates = ${3:3};\n// vertexCount * numCoordinates\nFloatBuffer vertices = BufferUtil.newFloatBuffer(vertexCount * numCoordinates);\nfloat[] v = {0.0f, 0.0f, 0.0f,\n 1.0f, 0.0f, 0.0f,\n 0.0f, 1.0f, 1.0f};\nvertices.put(v);\n\n// Bind the first buffer object ID for use with vertext array data\ngl.glBindBuffer(GL.GL_ARRAY_BUFFER, bufferObjects.get(0));\ngl.glBufferData(GL.GL_ARRAY_BUFFER, vertexCount * numCoordinates * BufferUtil.SIZEOF_FLOAT, vertices, GL.GL_STATIC_DRAW);", 635 | "description": "glGenBuffers", 636 | "scope": "source.pde" 637 | }, 638 | "glGenLists": { 639 | "prefix": "glGenLists", 640 | "body": "gl.glGenLists(${1:1})", 641 | "description": "glGenLists", 642 | "scope": "source.pde" 643 | }, 644 | "glGetError": { 645 | "prefix": "glGetError", 646 | "body": "println(gl.glGetError());", 647 | "description": "glGetError", 648 | "scope": "source.pde" 649 | }, 650 | "glLoadIdentity": { 651 | "prefix": "glLoadIdentity", 652 | "body": "// replaces the top of the active matrix stack with the identity matrix\ngl.glLoadIdentity();", 653 | "description": "glLoadIdentity", 654 | "scope": "source.pde" 655 | }, 656 | "glPushMatrix": { 657 | "prefix": "glPushMatrix", 658 | "body": "// spush and pop the current matrix stack\ngl.glPushMatrix();\n$1\ngl.glPopMatrix();", 659 | "description": "glPushMatrix", 660 | "scope": "source.pde" 661 | }, 662 | "glRotatef": { 663 | "prefix": "glRotatef", 664 | "body": "// rotation in degrees, x coordinate of a vector, y coord., z coord.\ngl.glRotatef(${1:deg}, ${2:x}, ${3:y}, ${4:z});", 665 | "description": "glRotatef", 666 | "scope": "source.pde" 667 | }, 668 | "glScalef": { 669 | "prefix": "glScalef", 670 | "body": "// multiply the current matrix by a general scaling matrix\ngl.glScalef(${1:x}, ${2:y}, ${3:z});", 671 | "description": "glScalef", 672 | "scope": "source.pde" 673 | }, 674 | "glTexCoord2f": { 675 | "prefix": "glTexCoord2f", 676 | "body": "// set the current texture coordinates - 2 floats\ngl.glTexCoord2f(${1:0.0f}, ${2:0.0f});", 677 | "description": "glTexCoord2f", 678 | "scope": "source.pde" 679 | }, 680 | "glTranslatef": { 681 | "prefix": "glTranslatef", 682 | "body": "// multiply the current matrix by a translation matrix\ngl.glTranslatef(${1:x}, ${2:y}, ${3:z});", 683 | "description": "glTranslatef", 684 | "scope": "source.pde" 685 | }, 686 | "glVertex2f": { 687 | "prefix": "glVertex2f", 688 | "body": "gl.glVertex2f(${1:0.0f}, ${2:0.0f});", 689 | "description": "glVertex2f", 690 | "scope": "source.pde" 691 | }, 692 | "glVertex3f": { 693 | "prefix": "glVertex3f", 694 | "body": "gl.glVertex3f(${1:0.0f}, ${2:0.0f}, ${3:0.0f});", 695 | "description": "glVertex3f", 696 | "scope": "source.pde" 697 | }, 698 | "green": { 699 | "prefix": "green", 700 | "body": "green(${1:color});", 701 | "description": "green", 702 | "scope": "source.pde" 703 | }, 704 | "HALF_PI": { 705 | "prefix": "HALF_PI", 706 | "body": "HALF_PI", 707 | "description": "HALF PI", 708 | "scope": "source.pde" 709 | }, 710 | "hex": { 711 | "prefix": "hex", 712 | "body": "hex(${3:c});", 713 | "description": "hex", 714 | "scope": "source.pde" 715 | }, 716 | "hour": { 717 | "prefix": "hour", 718 | "body": "hour()", 719 | "description": "hour", 720 | "scope": "source.pde" 721 | }, 722 | "hue": { 723 | "prefix": "hue", 724 | "body": "hue(${1:color});", 725 | "description": "hue", 726 | "scope": "source.pde" 727 | }, 728 | "?": { 729 | "prefix": "?", 730 | "body": "? ${1:trueExpression} : ${2:falseExpression}$0", 731 | "description": "?", 732 | "scope": "source.pde" 733 | }, 734 | "if": { 735 | "prefix": "if", 736 | "body": "if ($1) {\n\t$0\n}", 737 | "description": "if", 738 | "scope": "source.pde" 739 | }, 740 | "image": { 741 | "prefix": "image", 742 | "body": "image(${1:img}, ${2:x}, ${3:y}${6:, ${4:width}, ${5:height}});", 743 | "description": "image", 744 | "scope": "source.pde" 745 | }, 746 | "int": { 747 | "prefix": "int", 748 | "body": "int ${1:i} ${6:= ${3:0}};", 749 | "description": "int", 750 | "scope": "source.pde" 751 | }, 752 | "join": { 753 | "prefix": "join", 754 | "body": "join(${3:strgArray}, ${4:seperator});", 755 | "description": "join", 756 | "scope": "source.pde" 757 | }, 758 | "key": { 759 | "prefix": "key", 760 | "body": "key", 761 | "description": "key", 762 | "scope": "source.pde" 763 | }, 764 | "keyCode": { 765 | "prefix": "keyCode", 766 | "body": "keyCode", 767 | "description": "keyCode", 768 | "scope": "source.pde" 769 | }, 770 | "keyPressed_func": { 771 | "prefix": "keyPressed", 772 | "body": "void keyPressed() {\n\t${1}\n}", 773 | "description": "keyPressed", 774 | "scope": "source.pde" 775 | }, 776 | "keyPressed": { 777 | "prefix": "keyPressed", 778 | "body": "keyPressed", 779 | "description": "keyPressed", 780 | "scope": "source.pde" 781 | }, 782 | "keyReleased": { 783 | "prefix": "keyReleased", 784 | "body": "void keyReleased() {\n\t${1}\n}", 785 | "description": "keyReleased", 786 | "scope": "source.pde" 787 | }, 788 | "keyTyped": { 789 | "prefix": "keyTyped", 790 | "body": "void keyTyped() {\n\t${1}\n}", 791 | "description": "keyTyped", 792 | "scope": "source.pde" 793 | }, 794 | "lerp": { 795 | "prefix": "lerp", 796 | "body": "lerp(${1:value1}, ${2:value2}, ${3:amt});", 797 | "description": "lerp", 798 | "scope": "source.pde" 799 | }, 800 | "lerpColor": { 801 | "prefix": "lerpColor", 802 | "body": "lerpColor(${1:c1}, ${2:c2}, ${3:amt});", 803 | "description": "lerpColor", 804 | "scope": "source.pde" 805 | }, 806 | "lightFalloff": { 807 | "prefix": "lightFalloff", 808 | "body": "lightFalloff(${1:constant}, ${2:linear}, ${3:quadratic});", 809 | "description": "lightFalloff", 810 | "scope": "source.pde" 811 | }, 812 | "lights": { 813 | "prefix": "lights", 814 | "body": "lights();", 815 | "description": "lights", 816 | "scope": "source.pde" 817 | }, 818 | "lightSpecular": { 819 | "prefix": "lightSpecular", 820 | "body": "lightFalloff(${1:v1}, ${2:v2}, ${3:v3});", 821 | "description": "lightSpecular", 822 | "scope": "source.pde" 823 | }, 824 | "line_3d": { 825 | "prefix": "line_3d", 826 | "body": "line(${1:x1}, ${2:y1}, ${3:z1}, ${4:x2}, ${5:y2}, ${6:z2});", 827 | "description": "line 3d", 828 | "scope": "source.pde" 829 | }, 830 | "line1": { 831 | "prefix": "line", 832 | "body": "line(${1:x1}, ${2:y1}, ${3:x2}, ${4:y2});", 833 | "description": "line", 834 | "scope": "source.pde" 835 | }, 836 | "link": { 837 | "prefix": "link", 838 | "body": "link(${1:url}${4:, ${3:target}});", 839 | "description": "link", 840 | "scope": "source.pde" 841 | }, 842 | "loadBytes": { 843 | "prefix": "loadBytes", 844 | "body": "loadBytes(${2:\"${1:filename}\"});", 845 | "description": "loadBytes", 846 | "scope": "source.pde" 847 | }, 848 | "loadFont": { 849 | "prefix": "loadFont", 850 | "body": "${1:font} = loadFont(${3:\"${2:FFScala-32.vlw}\"});", 851 | "description": "loadFont", 852 | "scope": "source.pde" 853 | }, 854 | "loadImage": { 855 | "prefix": "loadImage", 856 | "body": "loadImage(${1:filename});", 857 | "description": "loadImage", 858 | "scope": "source.pde" 859 | }, 860 | "loadPixels": { 861 | "prefix": "loadPixels", 862 | "body": "loadPixels();", 863 | "description": "loadPixels", 864 | "scope": "source.pde" 865 | }, 866 | "loadShape": { 867 | "prefix": "loadShape", 868 | "body": "loadShape(${1:filename});", 869 | "description": "loadShape", 870 | "scope": "source.pde" 871 | }, 872 | "loadStrings": { 873 | "prefix": "loadStrings", 874 | "body": "loadStrings(${2:\"${1:filename}\"});", 875 | "description": "loadStrings", 876 | "scope": "source.pde" 877 | }, 878 | "loadXML": { 879 | "prefix": "loadXML", 880 | "body": "loadXML(${2:\"${1:filename}\"});", 881 | "description": "loadXML", 882 | "scope": "source.pde" 883 | }, 884 | "log": { 885 | "prefix": "log", 886 | "body": "log(${1:value});", 887 | "description": "log", 888 | "scope": "source.pde" 889 | }, 890 | "mag": { 891 | "prefix": "mag", 892 | "body": "mag(${1:a}, ${2:b}${4:, ${3:c}});", 893 | "description": "mag", 894 | "scope": "source.pde" 895 | }, 896 | "map": { 897 | "prefix": "map", 898 | "body": "map(${1:value}, ${2:low1}, ${4:high1}, ${5:low2}, ${6:high2});", 899 | "description": "map", 900 | "scope": "source.pde" 901 | }, 902 | "match": { 903 | "prefix": "match", 904 | "body": "match(${3:str}, ${4:regexp});", 905 | "description": "match", 906 | "scope": "source.pde" 907 | }, 908 | "max_array": { 909 | "prefix": "max_array", 910 | "body": "max(${1:array});", 911 | "description": "max array", 912 | "scope": "source.pde" 913 | }, 914 | "max1": { 915 | "prefix": "max", 916 | "body": "max(${1:value1}, ${2:value2});", 917 | "description": "max", 918 | "scope": "source.pde" 919 | }, 920 | "millis": { 921 | "prefix": "millis", 922 | "body": "millis()", 923 | "description": "millis", 924 | "scope": "source.pde" 925 | }, 926 | "min_array": { 927 | "prefix": "min_array", 928 | "body": "min(${1:array}};", 929 | "description": "min array", 930 | "scope": "source.pde" 931 | }, 932 | "min1": { 933 | "prefix": "min", 934 | "body": "min(${1:value1}, ${2:value2}${4:, ${3:value3}});", 935 | "description": "min", 936 | "scope": "source.pde" 937 | }, 938 | "minute": { 939 | "prefix": "minute", 940 | "body": "minute()", 941 | "description": "minute", 942 | "scope": "source.pde" 943 | }, 944 | "modelX": { 945 | "prefix": "modelX", 946 | "body": "modelX(${1:x}, ${2:y}, ${3:z});", 947 | "description": "modelX", 948 | "scope": "source.pde" 949 | }, 950 | "modelY": { 951 | "prefix": "modelY", 952 | "body": "modelY(${1:x}, ${2:y}, ${3:z});", 953 | "description": "modelY", 954 | "scope": "source.pde" 955 | }, 956 | "modelZ": { 957 | "prefix": "modelZ", 958 | "body": "modelZ(${1:x}, ${2:y}, ${3:z});", 959 | "description": "modelZ", 960 | "scope": "source.pde" 961 | }, 962 | "month": { 963 | "prefix": "month", 964 | "body": "month()", 965 | "description": "month", 966 | "scope": "source.pde" 967 | }, 968 | "mouseButton": { 969 | "prefix": "mouseButton", 970 | "body": "mouseButton", 971 | "description": "mouseButton", 972 | "scope": "source.pde" 973 | }, 974 | "mouseDragged": { 975 | "prefix": "mouseDragged", 976 | "body": "void mouseDragged() {\n\t${1}\n}", 977 | "description": "mouseDragged", 978 | "scope": "source.pde" 979 | }, 980 | "mouseMoved": { 981 | "prefix": "mouseMoved", 982 | "body": "void mouseMoved() {\n\t${1}\n}", 983 | "description": "mouseMoved", 984 | "scope": "source.pde" 985 | }, 986 | "mousePressed": { 987 | "prefix": "mousePressed", 988 | "body": "mousePressed", 989 | "description": "mousePressed", 990 | "scope": "source.pde" 991 | }, 992 | "mousePressed_func": { 993 | "prefix": "mousePressed", 994 | "body": "void mousePressed() {\n\t${1}\n}", 995 | "description": "mousePressed", 996 | "scope": "source.pde" 997 | }, 998 | "mouseReleased": { 999 | "prefix": "mouseReleased", 1000 | "body": "void mouseReleased() {\n\t${1}\n}", 1001 | "description": "mouseReleased", 1002 | "scope": "source.pde" 1003 | }, 1004 | "mouseX": { 1005 | "prefix": "mouseX", 1006 | "body": "mouseX", 1007 | "description": "mouseX", 1008 | "scope": "source.pde" 1009 | }, 1010 | "mouseY": { 1011 | "prefix": "mouseY", 1012 | "body": "mouseY", 1013 | "description": "mouseY", 1014 | "scope": "source.pde" 1015 | }, 1016 | "nf": { 1017 | "prefix": "nf", 1018 | "body": "nf(${3:value}, ${4:left}${6:, ${5:right}});", 1019 | "description": "nf", 1020 | "scope": "source.pde" 1021 | }, 1022 | "nfc": { 1023 | "prefix": "nfc", 1024 | "body": "nfc(${3:value}${5:, ${4:right}});", 1025 | "description": "nfc", 1026 | "scope": "source.pde" 1027 | }, 1028 | "nfp": { 1029 | "prefix": "nfp", 1030 | "body": "nfp(${3:value}, ${4:left}${6:, ${5:right}});", 1031 | "description": "nfp", 1032 | "scope": "source.pde" 1033 | }, 1034 | "nfs": { 1035 | "prefix": "nfs", 1036 | "body": "nfs(${3:value}, ${4:left}${6:, ${5:right}});", 1037 | "description": "nfs", 1038 | "scope": "source.pde" 1039 | }, 1040 | "noCursor": { 1041 | "prefix": "noCursor", 1042 | "body": "noCursor();", 1043 | "description": "noCursor", 1044 | "scope": "source.pde" 1045 | }, 1046 | "noFill": { 1047 | "prefix": "noFill", 1048 | "body": "noFill();", 1049 | "description": "noFill", 1050 | "scope": "source.pde" 1051 | }, 1052 | "noise": { 1053 | "prefix": "noise", 1054 | "body": "noise(${1:x}${5:, ${2:y}${4:, ${3:z}}});", 1055 | "description": "noise", 1056 | "scope": "source.pde" 1057 | }, 1058 | "noiseDetail": { 1059 | "prefix": "noiseDetail", 1060 | "body": "noiseDetail(${1:octaves}${4:, ${3:falloff}});", 1061 | "description": "noiseDetail", 1062 | "scope": "source.pde" 1063 | }, 1064 | "noiseSeed": { 1065 | "prefix": "noiseSeed", 1066 | "body": "noiseSeed(${1:x});", 1067 | "description": "noiseSeed", 1068 | "scope": "source.pde" 1069 | }, 1070 | "noLights": { 1071 | "prefix": "noLights", 1072 | "body": "noLights();", 1073 | "description": "noLights", 1074 | "scope": "source.pde" 1075 | }, 1076 | "norm": { 1077 | "prefix": "norm", 1078 | "body": "norm(${1:value}, ${2:low}, ${3:high});", 1079 | "description": "norm", 1080 | "scope": "source.pde" 1081 | }, 1082 | "normal": { 1083 | "prefix": "normal", 1084 | "body": "normal(${1:nx}, ${2:ny}, ${3:nz});", 1085 | "description": "normal", 1086 | "scope": "source.pde" 1087 | }, 1088 | "noSmooth": { 1089 | "prefix": "noSmooth", 1090 | "body": "noSmooth();", 1091 | "description": "noSmooth", 1092 | "scope": "source.pde" 1093 | }, 1094 | "noStroke": { 1095 | "prefix": "noStroke", 1096 | "body": "noStroke();", 1097 | "description": "noStroke", 1098 | "scope": "source.pde" 1099 | }, 1100 | "noTint": { 1101 | "prefix": "noTint", 1102 | "body": "noTint();", 1103 | "description": "noTint", 1104 | "scope": "source.pde" 1105 | }, 1106 | "Object": { 1107 | "prefix": "Object", 1108 | "body": "${1:Object} ${2:o}${4: = new ${1}($3)};", 1109 | "description": "Object", 1110 | "scope": "source.pde" 1111 | }, 1112 | "online": { 1113 | "prefix": "online", 1114 | "body": "online", 1115 | "description": "online", 1116 | "scope": "source.pde" 1117 | }, 1118 | "ortho": { 1119 | "prefix": "ortho", 1120 | "body": "ortho(${7:${1:left}, ${2:right}, ${3:bottom}, ${4:top}, ${5:near}, ${6:far}});", 1121 | "description": "ortho", 1122 | "scope": "source.pde" 1123 | }, 1124 | "package": { 1125 | "prefix": "package", 1126 | "body": "/**\n * ${1:Description}\n *\n *\t@author ${2:$TM_FULLNAME}\n *\t@since ${3:`date +%d.%m.%Y`}\n */\n\npackage ${4:package};", 1127 | "description": "package", 1128 | "scope": "source.pde" 1129 | }, 1130 | "param": { 1131 | "prefix": "param", 1132 | "body": "param(${1:s});", 1133 | "description": "param", 1134 | "scope": "source.pde" 1135 | }, 1136 | "parseXML": { 1137 | "prefix": "parseXML", 1138 | "body": "parseXML(${1:rawString});", 1139 | "description": "parseXML", 1140 | "scope": "source.pde" 1141 | }, 1142 | "perspective": { 1143 | "prefix": "perspective", 1144 | "body": "perspective(${5:${1:fov}, ${2:aspect}, ${3:zNear}, ${4:zFar}});", 1145 | "description": "perspective", 1146 | "scope": "source.pde" 1147 | }, 1148 | "PFont": { 1149 | "prefix": "PFont", 1150 | "body": "PFont ${1:font};\n$1 = loadFont(${3:\"${2:FFScala-32.vlw}\"});", 1151 | "description": "PFont", 1152 | "scope": "source.pde" 1153 | }, 1154 | "PGraphics": { 1155 | "prefix": "PGraphics", 1156 | "body": "PGraphics pg;\npg = createGraphics(${5:${1:width}, ${2:height}${4:, ${3:applet}}});", 1157 | "description": "PGraphics", 1158 | "scope": "source.pde" 1159 | }, 1160 | "PI": { 1161 | "prefix": "PI", 1162 | "body": "PI", 1163 | "description": "PI", 1164 | "scope": "source.pde" 1165 | }, 1166 | "PImage": { 1167 | "prefix": "PImage", 1168 | "body": "PImage(${1:width}, ${2:height});", 1169 | "description": "PImage", 1170 | "scope": "source.pde" 1171 | }, 1172 | "pixels": { 1173 | "prefix": "pixels", 1174 | "body": "pixels[${1:index}]", 1175 | "description": "pixels", 1176 | "scope": "source.pde" 1177 | }, 1178 | "pmouseX": { 1179 | "prefix": "pmouseX", 1180 | "body": "pmouseX", 1181 | "description": "pmouseX", 1182 | "scope": "source.pde" 1183 | }, 1184 | "pmouseY": { 1185 | "prefix": "pmouseY", 1186 | "body": "pmouseY", 1187 | "description": "pmouseY", 1188 | "scope": "source.pde" 1189 | }, 1190 | "point": { 1191 | "prefix": "point", 1192 | "body": "point(${1:x}, ${2:y}${4:, ${3:z}});", 1193 | "description": "point", 1194 | "scope": "source.pde" 1195 | }, 1196 | "pointLight": { 1197 | "prefix": "pointLight", 1198 | "body": "pointLight(${1:v1}, ${2:v2}, ${3:v3}, ${4:nx}, ${5:ny}, ${6:nz});", 1199 | "description": "pointLight", 1200 | "scope": "source.pde" 1201 | }, 1202 | "pow": { 1203 | "prefix": "pow", 1204 | "body": "pow(${1:num}, ${2:exponent});", 1205 | "description": "pow", 1206 | "scope": "source.pde" 1207 | }, 1208 | "printCamera": { 1209 | "prefix": "printCamera", 1210 | "body": "printCamera();", 1211 | "description": "printCamera", 1212 | "scope": "source.pde" 1213 | }, 1214 | "println_var": { 1215 | "prefix": "println_var", 1216 | "body": "println(\"${1:var}: \"+${1:var});$0", 1217 | "description": "println var", 1218 | "scope": "source.pde" 1219 | }, 1220 | "println_text": { 1221 | "prefix": "println_text", 1222 | "body": "println(\"$1\");$0", 1223 | "description": "println text", 1224 | "scope": "source.pde" 1225 | }, 1226 | "printMatrix": { 1227 | "prefix": "printMatrix", 1228 | "body": "printMatrix();", 1229 | "description": "printMatrix", 1230 | "scope": "source.pde" 1231 | }, 1232 | "printProjection": { 1233 | "prefix": "printProjection", 1234 | "body": "printProjection();", 1235 | "description": "printProjection", 1236 | "scope": "source.pde" 1237 | }, 1238 | "private_function": { 1239 | "prefix": "private_function", 1240 | "body": "private ${1:void} ${2:name}($3) {\n\t$0${1/void$|(.+)/(?1:return null;)/}\n}", 1241 | "description": "private function", 1242 | "scope": "source.pde" 1243 | }, 1244 | "private_static_function": { 1245 | "prefix": "private_static_function", 1246 | "body": "private static ${1:void} ${2:name}($3) {\n\t$0${1/void$|(.+)/(?1:return null;)/}\n}", 1247 | "description": "private static function", 1248 | "scope": "source.pde" 1249 | }, 1250 | "private_static_var": { 1251 | "prefix": "private_static_var", 1252 | "body": "private static ${1:String} ${2:str}${4: = ${3:value}};", 1253 | "description": "private static var", 1254 | "scope": "source.pde" 1255 | }, 1256 | "private_var_object": { 1257 | "prefix": "private_var_object", 1258 | "body": "private ${1:Object} ${2:o}${4: = new ${1}($3)};", 1259 | "description": "private var object", 1260 | "scope": "source.pde" 1261 | }, 1262 | "private_var": { 1263 | "prefix": "private_var", 1264 | "body": "private ${1:String} ${2:str}${4: = ${3:value}};", 1265 | "description": "private var", 1266 | "scope": "source.pde" 1267 | }, 1268 | "protected_function": { 1269 | "prefix": "protected_function", 1270 | "body": "protected ${1:void} ${2:name}($3) {\n\t$0${1/void$|(.+)/(?1:return null;)/}\n}", 1271 | "description": "protected function", 1272 | "scope": "source.pde" 1273 | }, 1274 | "protected_var_object": { 1275 | "prefix": "protected_var_object", 1276 | "body": "protected ${1:Object} ${2:o}${4: = new ${1}($3)};", 1277 | "description": "protected var object", 1278 | "scope": "source.pde" 1279 | }, 1280 | "protected_var": { 1281 | "prefix": "protected_var", 1282 | "body": "protected ${1:String} ${2:str}${4: = ${3:value}};", 1283 | "description": "protected var", 1284 | "scope": "source.pde" 1285 | }, 1286 | "public_function": { 1287 | "prefix": "public_function", 1288 | "body": "public ${1:void} ${2:name}($3) {\n\t$0${1/void$|(.+)/(?1:return null;)/}\n}", 1289 | "description": "public function", 1290 | "scope": "source.pde" 1291 | }, 1292 | "public_static_function": { 1293 | "prefix": "public_static_function", 1294 | "body": "public static ${1:void} ${2:name}($3) {\n\t$0${1/void$|(.+)/(?1:return null;)/}\n}", 1295 | "description": "public static function", 1296 | "scope": "source.pde" 1297 | }, 1298 | "public_static_var": { 1299 | "prefix": "public_static_var", 1300 | "body": "public static ${1:String} ${2:str}${4: = ${3:value}};", 1301 | "description": "public static var", 1302 | "scope": "source.pde" 1303 | }, 1304 | "public_var_object": { 1305 | "prefix": "public_var_object", 1306 | "body": "public ${1:Object} ${2:o}${4: = new ${1}($3)};", 1307 | "description": "public var object", 1308 | "scope": "source.pde" 1309 | }, 1310 | "public_var": { 1311 | "prefix": "public_var", 1312 | "body": "public ${1:String} ${2:str}${4: = ${3:value}};", 1313 | "description": "public var", 1314 | "scope": "source.pde" 1315 | }, 1316 | "pushMatrix/popMatrix": { 1317 | "prefix": "pushMatrix/popMatrix", 1318 | "body": "pushMatrix();\n${1:}\npopMatrix();", 1319 | "description": "pushMatrix/popMatrix", 1320 | "scope": "source.pde" 1321 | }, 1322 | "quad": { 1323 | "prefix": "quad", 1324 | "body": "quad(${1:x1}, ${2:y1}, ${3:x2}, ${4:y2}, ${5:x3}, ${6:y3}, ${7:x4}, ${8:y4});", 1325 | "description": "quad", 1326 | "scope": "source.pde" 1327 | }, 1328 | "radians": { 1329 | "prefix": "radians", 1330 | "body": "radians(${1:deg});", 1331 | "description": "radians", 1332 | "scope": "source.pde" 1333 | }, 1334 | "random": { 1335 | "prefix": "random", 1336 | "body": "random(${1:value1}${3:, ${2:value2}});", 1337 | "description": "random", 1338 | "scope": "source.pde" 1339 | }, 1340 | "randomGaussian": { 1341 | "prefix": "randomGaussian", 1342 | "body": "randomGaussian();", 1343 | "description": "randomGaussian", 1344 | "scope": "source.pde" 1345 | }, 1346 | "randomSeed": { 1347 | "prefix": "randomSeed", 1348 | "body": "randomSeed(${1:value});", 1349 | "description": "randomSeed", 1350 | "scope": "source.pde" 1351 | }, 1352 | "rect": { 1353 | "prefix": "rect", 1354 | "body": "rect(${1:x}, ${2:y}, ${3:width}, ${4:height});", 1355 | "description": "rect", 1356 | "scope": "source.pde" 1357 | }, 1358 | "rectMode": { 1359 | "prefix": "rectMode", 1360 | "body": "rectMode(${1:CENTER});", 1361 | "description": "rectMode", 1362 | "scope": "source.pde" 1363 | }, 1364 | "red": { 1365 | "prefix": "red", 1366 | "body": "red(${1:color});", 1367 | "description": "red", 1368 | "scope": "source.pde" 1369 | }, 1370 | "resetMatrix": { 1371 | "prefix": "resetMatrix", 1372 | "body": "translate(${1:x}, ${2:y}, ${3:z});", 1373 | "description": "resetMatrix", 1374 | "scope": "source.pde" 1375 | }, 1376 | "reverse": { 1377 | "prefix": "reverse", 1378 | "body": "reverse(${1:array});", 1379 | "description": "reverse", 1380 | "scope": "source.pde" 1381 | }, 1382 | "rotate": { 1383 | "prefix": "rotate", 1384 | "body": "rotate(${1:rad});", 1385 | "description": "rotate", 1386 | "scope": "source.pde" 1387 | }, 1388 | "rotateX": { 1389 | "prefix": "rotateX", 1390 | "body": "rotateX(${1:rad});", 1391 | "description": "rotateX", 1392 | "scope": "source.pde" 1393 | }, 1394 | "rotateY": { 1395 | "prefix": "rotateY", 1396 | "body": "rotateY(${1:rad});", 1397 | "description": "rotateY", 1398 | "scope": "source.pde" 1399 | }, 1400 | "rotateZ": { 1401 | "prefix": "rotateZ", 1402 | "body": "rotateZ(${1:rad});", 1403 | "description": "rotateZ", 1404 | "scope": "source.pde" 1405 | }, 1406 | "round": { 1407 | "prefix": "round", 1408 | "body": "round(${1:value});", 1409 | "description": "round", 1410 | "scope": "source.pde" 1411 | }, 1412 | "saturation": { 1413 | "prefix": "saturation", 1414 | "body": "saturation(${1:color});", 1415 | "description": "saturation", 1416 | "scope": "source.pde" 1417 | }, 1418 | "save": { 1419 | "prefix": "save", 1420 | "body": "saveFrame(${2:\"${1:filename}\"});", 1421 | "description": "save", 1422 | "scope": "source.pde" 1423 | }, 1424 | "saveBytes": { 1425 | "prefix": "saveBytes", 1426 | "body": "saveBytes(${1:filename}, ${2:bytes});", 1427 | "description": "saveBytes", 1428 | "scope": "source.pde" 1429 | }, 1430 | "saveFrame": { 1431 | "prefix": "saveFrame", 1432 | "body": "saveFrame(${2:\"${1:filename-####.ext}\"});", 1433 | "description": "saveFrame", 1434 | "scope": "source.pde" 1435 | }, 1436 | "saveStrings": { 1437 | "prefix": "saveStrings", 1438 | "body": "saveStrings(${1:filename}, ${2:strings});", 1439 | "description": "saveStrings", 1440 | "scope": "source.pde" 1441 | }, 1442 | "saveXML": { 1443 | "prefix": "saveXML", 1444 | "body": "saveXML(${1:xml}, ${2:filename});", 1445 | "description": "saveXML", 1446 | "scope": "source.pde" 1447 | }, 1448 | "scale_SIZE": { 1449 | "prefix": "scale_SIZE", 1450 | "body": "scale(${1:size});", 1451 | "description": "scale SIZE", 1452 | "scope": "source.pde" 1453 | }, 1454 | "scale1": { 1455 | "prefix": "scale", 1456 | "body": "scale(${1:x}, ${2:y}${4:, ${3:z}});", 1457 | "description": "scale", 1458 | "scope": "source.pde" 1459 | }, 1460 | "screenX": { 1461 | "prefix": "screenX", 1462 | "body": "screenX(${1:x}, ${2:y}, ${3:z});", 1463 | "description": "screenX", 1464 | "scope": "source.pde" 1465 | }, 1466 | "screenY": { 1467 | "prefix": "screenY", 1468 | "body": "screenY(${1:x}, ${2:y}, ${3:z});", 1469 | "description": "screenY", 1470 | "scope": "source.pde" 1471 | }, 1472 | "screenZ": { 1473 | "prefix": "screenZ", 1474 | "body": "screenZ(${1:x}, ${2:y}, ${3:z});", 1475 | "description": "screenZ", 1476 | "scope": "source.pde" 1477 | }, 1478 | "screen.height": { 1479 | "prefix": "screen.height", 1480 | "body": "screen.height", 1481 | "description": "screen.height", 1482 | "scope": "source.pde" 1483 | }, 1484 | "screen.width": { 1485 | "prefix": "screen.width", 1486 | "body": "screen.width", 1487 | "description": "screen.width", 1488 | "scope": "source.pde" 1489 | }, 1490 | "second": { 1491 | "prefix": "second", 1492 | "body": "second()", 1493 | "description": "second", 1494 | "scope": "source.pde" 1495 | }, 1496 | "set_pixel": { 1497 | "prefix": "set_pixel", 1498 | "body": "set(${1:x}, ${2:y}, ${3:color/image});", 1499 | "description": "set pixel", 1500 | "scope": "source.pde" 1501 | }, 1502 | "set1": { 1503 | "prefix": "set", 1504 | "body": "public void set${1/./\\u$0/}(${2:String} new${1/./\\u$0/}) {\n ${1:fieldName} = new${1/./\\u$0/};\n}\n", 1505 | "description": "set", 1506 | "scope": "source.pde" 1507 | }, 1508 | "setSwapInterval": { 1509 | "prefix": "setSwapInterval", 1510 | "body": "// specify the minimum swap interval for buffer swaps.\ngl.setSwapInterval(${1:interval});", 1511 | "description": "setSwapInterval", 1512 | "scope": "source.pde" 1513 | }, 1514 | "setup_OpenGL": { 1515 | "prefix": "setup_OpenGL", 1516 | "body": "import processing.opengl.*;\nimport javax.media.opengl.*;\n\nPGraphicsOpenGL pgl;\nGL gl;\n\nvoid setup() {\n\tsize( ${1:300}, ${2:300}, OPENGL );\n\tcolorMode( RGB, 1.0 );\n\thint( ENABLE_OPENGL_4X_SMOOTH );\n\tpgl = (PGraphicsOpenGL) g;\n\tgl = pgl.gl;\n\tgl.setSwapInterval(1);\n\tinitGL();\n\t$3\n}\n\nvoid draw() {\n\tpgl.beginGL();\n \t$4\n\tpgl.endGL();\n\tgetOpenGLErrors();\n}\n\nvoid initGL() {\n\t$5\n}\n\nvoid getOpenGLErrors() {\n int error = gl.glGetError();\n switch (error) {\n case 1280 :\n println(\"GL_INVALID_ENUM - An invalid enumerant was passed to an OpenGL command.\");\n break;\n case 1282 :\n println(\"GL_INVALID_OPERATION - An OpenGL command was issued that was invalid or inappropriate for the current state.\");\n break;\n case 1281 :\n println(\"GL_INVALID_VALUE - A value was passed to OpenGL that was outside the allowed range.\");\n break;\n case 1285 :\n println(\"GL_OUT_OF_MEMORY - OpenGL was unable to allocate enough memory to process a command.\");\n break;\n case 1283 :\n println(\"GL_STACK_OVERFLOW - A command caused an OpenGL stack to overflow.\");\n break;\n case 1284 :\n println(\"GL_STACK_UNDERFLOW - A command caused an OpenGL stack to underflow.\");\n break;\n case 32817 :\n println(\"GL_TABLE_TOO_LARGE\");\n break;\n }\n}", 1517 | "description": "setup OpenGL", 1518 | "scope": "source.pde" 1519 | }, 1520 | "setup1": { 1521 | "prefix": "setup", 1522 | "body": "void setup() {\n\t$1\n}\n\nvoid draw() {\n\t$0\n}\n", 1523 | "description": "setup", 1524 | "scope": "source.pde" 1525 | }, 1526 | "shape": { 1527 | "prefix": "shape", 1528 | "body": "shape(${1:s}, ${2:x}, ${3:y}, ${4:w}, ${5:h});", 1529 | "description": "shape", 1530 | "scope": "source.pde" 1531 | }, 1532 | "shapeMode": { 1533 | "prefix": "shapeMode", 1534 | "body": "shapeMode(${1:CENTER});", 1535 | "description": "shapeMode", 1536 | "scope": "source.pde" 1537 | }, 1538 | "shininess": { 1539 | "prefix": "shininess", 1540 | "body": "shininess(${1:shine});", 1541 | "description": "shininess", 1542 | "scope": "source.pde" 1543 | }, 1544 | "shorten": { 1545 | "prefix": "shorten", 1546 | "body": "shorten(${1:array});", 1547 | "description": "shorten", 1548 | "scope": "source.pde" 1549 | }, 1550 | "sin": { 1551 | "prefix": "sin", 1552 | "body": "sin(${1:rad});", 1553 | "description": "sin", 1554 | "scope": "source.pde" 1555 | }, 1556 | "size_OPENGL": { 1557 | "prefix": "size_OPENGL", 1558 | "body": "size(${1:200}, ${2:200}${3:, OPENGL});", 1559 | "description": "size OPENGL", 1560 | "scope": "source.pde" 1561 | }, 1562 | "size1": { 1563 | "prefix": "size", 1564 | "body": "size(${1:512}, ${2:512});", 1565 | "description": "size", 1566 | "scope": "source.pde" 1567 | }, 1568 | "smooth1": { 1569 | "prefix": "smooth", 1570 | "body": "smooth();", 1571 | "description": "smooth", 1572 | "scope": "source.pde" 1573 | }, 1574 | "sort": { 1575 | "prefix": "sort", 1576 | "body": "sort(${1:dataArray}${3:, ${2:count}});", 1577 | "description": "sort", 1578 | "scope": "source.pde" 1579 | }, 1580 | "specular": { 1581 | "prefix": "specular", 1582 | "body": "specular(${8:${3:value1}, ${4:value2}, ${5:value3}${7:, ${6:alpha}}});", 1583 | "description": "specular", 1584 | "scope": "source.pde" 1585 | }, 1586 | "sphere": { 1587 | "prefix": "sphere", 1588 | "body": "sphere(${1:radius});", 1589 | "description": "sphere", 1590 | "scope": "source.pde" 1591 | }, 1592 | "sphereDetail": { 1593 | "prefix": "sphereDetail", 1594 | "body": "sphereDetail(${1:n});", 1595 | "description": "sphereDetail", 1596 | "scope": "source.pde" 1597 | }, 1598 | "splice": { 1599 | "prefix": "splice", 1600 | "body": "splice(${1:array}, ${2:value/array2}, ${3:index});", 1601 | "description": "splice", 1602 | "scope": "source.pde" 1603 | }, 1604 | "split": { 1605 | "prefix": "split", 1606 | "body": "split(${3:str}, ${4:delimiter});", 1607 | "description": "split", 1608 | "scope": "source.pde" 1609 | }, 1610 | "splitTokens": { 1611 | "prefix": "splitTokens", 1612 | "body": "splitTokens(${3:str}${5:, ${4:tokens}});", 1613 | "description": "splitTokens", 1614 | "scope": "source.pde" 1615 | }, 1616 | "spotLight": { 1617 | "prefix": "spotLight", 1618 | "body": "spotLight(${1:v1}, ${2:v2}, ${3:v3}, ${4:x}, ${5:y}, ${6:z}, ${7:nx}, ${8:ny}, ${9:nz}, ${10:angle}, ${11:concentration});", 1619 | "description": "spotLight", 1620 | "scope": "source.pde" 1621 | }, 1622 | "sq": { 1623 | "prefix": "sq", 1624 | "body": "sq(${1:value});", 1625 | "description": "sq", 1626 | "scope": "source.pde" 1627 | }, 1628 | "sqrt": { 1629 | "prefix": "sqrt", 1630 | "body": "sqrt(${1:value});", 1631 | "description": "sqrt", 1632 | "scope": "source.pde" 1633 | }, 1634 | "status": { 1635 | "prefix": "status", 1636 | "body": "status(${1:text});", 1637 | "description": "status", 1638 | "scope": "source.pde" 1639 | }, 1640 | "str": { 1641 | "prefix": "str", 1642 | "body": "str(${3:\"${1:str}\"});", 1643 | "description": "str", 1644 | "scope": "source.pde" 1645 | }, 1646 | "String": { 1647 | "prefix": "String", 1648 | "body": "String ${1:str} ${6:= \"${3:CCCP}\"};", 1649 | "description": "String", 1650 | "scope": "source.pde" 1651 | }, 1652 | "stroke_grey_alpha": { 1653 | "prefix": "stroke_grey_alpha", 1654 | "body": "stroke(${1:grey}, ${2:alpha});", 1655 | "description": "stroke grey alpha", 1656 | "scope": "source.pde" 1657 | }, 1658 | "stroke_grey": { 1659 | "prefix": "stroke_grey", 1660 | "body": "stroke(${1:grey});", 1661 | "description": "stroke grey", 1662 | "scope": "source.pde" 1663 | }, 1664 | "stroke_rgb": { 1665 | "prefix": "stroke_rgb", 1666 | "body": "stroke(${1:red}, ${2:green}, ${3:blue});", 1667 | "description": "stroke rgb", 1668 | "scope": "source.pde" 1669 | }, 1670 | "stroke_rgba": { 1671 | "prefix": "stroke_rgba", 1672 | "body": "stroke(${1:red}, ${2:green}, ${3:blue}, ${6:alpha});", 1673 | "description": "stroke rgba", 1674 | "scope": "source.pde" 1675 | }, 1676 | "stroke4": { 1677 | "prefix": "stroke", 1678 | "body": "stroke(${8:${3:value1}, ${4:value2}, ${5:value3}${7:, ${6:alpha}}});", 1679 | "description": "stroke", 1680 | "scope": "source.pde" 1681 | }, 1682 | "strokeWeight": { 1683 | "prefix": "strokeWeight", 1684 | "body": "strokeWeight(${1:1});", 1685 | "description": "strokeWeight", 1686 | "scope": "source.pde" 1687 | }, 1688 | "subset": { 1689 | "prefix": "subset", 1690 | "body": "subset(${1:array}, ${2:offset});", 1691 | "description": "subset", 1692 | "scope": "source.pde" 1693 | }, 1694 | "switch": { 1695 | "prefix": "switch", 1696 | "body": "switch ($1) {\n\t$0\n}", 1697 | "description": "switch", 1698 | "scope": "source.pde" 1699 | }, 1700 | "tan": { 1701 | "prefix": "tan", 1702 | "body": "tan(${1:rad});", 1703 | "description": "tan", 1704 | "scope": "source.pde" 1705 | }, 1706 | "text_data": { 1707 | "prefix": "text_data", 1708 | "body": "text(${1:data}, ${2:x}, ${3:y}${5:, ${4:z}});", 1709 | "description": "text data", 1710 | "scope": "source.pde" 1711 | }, 1712 | "text_stringdata": { 1713 | "prefix": "text_stringdata", 1714 | "body": "text(${1:stringdata}, ${2:x}, ${3:y}, ${4:width}, ${5:height}${7:, ${6:z}});", 1715 | "description": "text stringdata", 1716 | "scope": "source.pde" 1717 | }, 1718 | "textAscent": { 1719 | "prefix": "textAscent", 1720 | "body": "textAscent();", 1721 | "description": "textAscent", 1722 | "scope": "source.pde" 1723 | }, 1724 | "textDescent": { 1725 | "prefix": "textDescent", 1726 | "body": "textDescent();", 1727 | "description": "textDescent", 1728 | "scope": "source.pde" 1729 | }, 1730 | "textFont": { 1731 | "prefix": "textFont", 1732 | "body": "textFont(${1:font}${7:, ${6:size}});", 1733 | "description": "textFont", 1734 | "scope": "source.pde" 1735 | }, 1736 | "textLeading": { 1737 | "prefix": "textLeading", 1738 | "body": "textLeading(${1:size});", 1739 | "description": "textLeading", 1740 | "scope": "source.pde" 1741 | }, 1742 | "textSize": { 1743 | "prefix": "textSize", 1744 | "body": "textSize(${1:size});", 1745 | "description": "textSize", 1746 | "scope": "source.pde" 1747 | }, 1748 | "textWidth": { 1749 | "prefix": "textWidth", 1750 | "body": "textWidth(${1:data});", 1751 | "description": "textWidth", 1752 | "scope": "source.pde" 1753 | }, 1754 | "throw": { 1755 | "prefix": "throw", 1756 | "body": "throw new Exception(\"${1:Name}\");", 1757 | "description": "throw", 1758 | "scope": "source.pde" 1759 | }, 1760 | "tint": { 1761 | "prefix": "tint", 1762 | "body": "tint(${8:${3:value1}, ${4:value2}, ${5:value3}${7:, ${6:alpha}}});", 1763 | "description": "tint", 1764 | "scope": "source.pde" 1765 | }, 1766 | "translate": { 1767 | "prefix": "translate", 1768 | "body": "translate(${1:x}, ${2:y}${4:, ${3:z}});", 1769 | "description": "translate", 1770 | "scope": "source.pde" 1771 | }, 1772 | "triangle": { 1773 | "prefix": "triangle", 1774 | "body": "triangle(${1:x1}, ${2:y1}, ${3:x2}, ${4:y2}, ${5:x3}, ${6:y3});", 1775 | "description": "triangle", 1776 | "scope": "source.pde" 1777 | }, 1778 | "trim": { 1779 | "prefix": "trim", 1780 | "body": "trim(${3:str});", 1781 | "description": "trim", 1782 | "scope": "source.pde" 1783 | }, 1784 | "try": { 1785 | "prefix": "try", 1786 | "body": "try {\n\t$1\n}", 1787 | "description": "try", 1788 | "scope": "source.pde" 1789 | }, 1790 | "try..catch": { 1791 | "prefix": "try..catch", 1792 | "body": "try {\n\t$1\n} catch (${2:Exception} e) {\n\t$3\n}", 1793 | "description": "try..catch", 1794 | "scope": "source.pde" 1795 | }, 1796 | "try..catch..finally": { 1797 | "prefix": "try..catch..finally", 1798 | "body": "try {\n\t$1\n} catch (${2:Exception} e) {\n\t$3\n} finally {\n\t$4\n}", 1799 | "description": "try..catch..finally", 1800 | "scope": "source.pde" 1801 | }, 1802 | "TWO_PI": { 1803 | "prefix": "TWO_PI", 1804 | "body": "TWO_PI", 1805 | "description": "TWO PI", 1806 | "scope": "source.pde" 1807 | }, 1808 | "unbinary": { 1809 | "prefix": "unbinary", 1810 | "body": "unbinary(${3:\"${1:str}\"});", 1811 | "description": "unbinary", 1812 | "scope": "source.pde" 1813 | }, 1814 | "unhex": { 1815 | "prefix": "unhex", 1816 | "body": "unhex(${3:c});", 1817 | "description": "unhex", 1818 | "scope": "source.pde" 1819 | }, 1820 | "updatePixels": { 1821 | "prefix": "updatePixels", 1822 | "body": "updatePixels();", 1823 | "description": "updatePixels", 1824 | "scope": "source.pde" 1825 | }, 1826 | "var_object": { 1827 | "prefix": "var_object", 1828 | "body": "${1:Object} ${2:o}${4: = new ${1}($3)};", 1829 | "description": "var object", 1830 | "scope": "source.pde" 1831 | }, 1832 | "var1": { 1833 | "prefix": "var", 1834 | "body": "${1:String} ${2:str}${4: = ${3:value};}", 1835 | "description": "var", 1836 | "scope": "source.pde" 1837 | }, 1838 | "var_vector": { 1839 | "prefix": "var_vector", 1840 | "body": "PVector ${1:v} = new PVector(${2});", 1841 | "description": "var vector", 1842 | "scope": "source.pde" 1843 | }, 1844 | "var_vector_xy": { 1845 | "prefix": "var_vector_xy", 1846 | "body": "PVector ${1:v} = new PVector(${2:x},${3:y});", 1847 | "description": "var vector xy", 1848 | "scope": "source.pde" 1849 | }, 1850 | "var_vector_xyz": { 1851 | "prefix": "var_vector_xyz", 1852 | "body": "PVector ${1:v} = new PVector(${2:x},${3:y},${4:z});", 1853 | "description": "var vector xyz", 1854 | "scope": "source.pde" 1855 | }, 1856 | "vertex_3D": { 1857 | "prefix": "vertex_3D", 1858 | "body": "vertex(${1:x}, ${2:y}, ${3:z}${6:, ${4:u}, ${5:v}});", 1859 | "description": "vertex 3D", 1860 | "scope": "source.pde" 1861 | }, 1862 | "vertex1": { 1863 | "prefix": "vertex", 1864 | "body": "vertex(${1:x}, ${2:y}${5:, ${3:u}, ${4:v}});", 1865 | "description": "vertex", 1866 | "scope": "source.pde" 1867 | }, 1868 | "while": { 1869 | "prefix": "while", 1870 | "body": "while ($1) {\n\t$0\n}", 1871 | "description": "while", 1872 | "scope": "source.pde" 1873 | }, 1874 | "year": { 1875 | "prefix": "year", 1876 | "body": "year()", 1877 | "description": "year", 1878 | "scope": "source.pde" 1879 | } 1880 | } 1881 | -------------------------------------------------------------------------------- /src/extension.ts: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | import * as vscode from 'vscode'; 3 | import * as fs from 'fs'; 4 | import * as path from 'path'; 5 | import * as child_process from 'child_process'; 6 | import { 7 | processingCommand, 8 | buildProcessingArgs, 9 | processingTaskFilename 10 | } from './processing-tasks'; 11 | import * as search from './search'; 12 | 13 | 14 | function remindAddToPath() { 15 | return vscode.window.showInformationMessage('Remember to add Processing to your path!', 'Learn More').then((item: string | undefined) => { 16 | if (item === 'Learn More') { 17 | // Open a URL using the npm module "open" 18 | search.openURL('https://github.com/TobiahZ/processing-vscode#add-processing-to-path'); 19 | } 20 | }); 21 | } 22 | 23 | function copyFile(source: fs.PathLike, target: fs.PathLike, cb: Function) { 24 | let cbCalled = false; 25 | 26 | function done(err?: Error) { 27 | if (!cbCalled) { 28 | cb(err); 29 | cbCalled = true; 30 | } 31 | } 32 | 33 | let rd = fs.createReadStream(source); 34 | rd.on('error', function (err: Error) { 35 | done(err); 36 | }); 37 | let wr = fs.createWriteStream(target); 38 | wr.on('error', function (err: Error) { 39 | done(err); 40 | }); 41 | wr.on('close', function () { 42 | done(); 43 | }); 44 | rd.pipe(wr); 45 | 46 | } 47 | 48 | function checkIfProjectOpen(callback: Function) { 49 | vscode.window.showWorkspaceFolderPick().then((root: vscode.WorkspaceFolder | undefined) => { 50 | if (root === undefined) { 51 | vscode.window.showErrorMessage('Open project folder first'); 52 | } 53 | else { 54 | fs.stat(root.uri.fsPath + '/' + root.name + '.pde', (err, stats) => { 55 | if (err && err.code === 'ENOENT') { 56 | // Named file doesn't exist. 57 | vscode.window.showErrorMessage('Create a ' + root.name + '.pde file first!'); 58 | } else if (err) { 59 | vscode.window.showErrorMessage('When checking if ' + root.name + '.pde exists: ' + err); 60 | } else if (stats.isFile()) { 61 | callback(root); 62 | } 63 | }); 64 | } 65 | }); 66 | } 67 | 68 | function openDocErrorMessage(str: string) { 69 | return vscode.window.showErrorMessage('Error: ' + str, 'Open Docs').then((item: string | undefined) => { 70 | if (item === 'Open Docs') { 71 | search.openURL('docs'); 72 | } 73 | }); 74 | } 75 | 76 | export function activate(context: vscode.ExtensionContext) { 77 | 78 | console.log('Processing language extension is now active!'); 79 | 80 | let create_task_file = vscode.commands.registerCommand('processing.CreateTaskFile', () => { 81 | 82 | const pdeTaskFile = path.join(context.extensionPath, processingTaskFilename); 83 | 84 | checkIfProjectOpen((root: vscode.WorkspaceFolder) => { 85 | let taskPath = path.join(root.uri.fsPath, '.vscode'); 86 | 87 | function copyTaskFile(destination: string) { 88 | copyFile(pdeTaskFile, destination, function (err: Error) { 89 | if (err) { 90 | return console.log(err); 91 | } 92 | remindAddToPath(); 93 | }); 94 | } 95 | 96 | fs.stat(taskPath, (err, stats) => { 97 | if (err && err.code === 'ENOENT') { 98 | // .vscode doesn't exist, creating it 99 | try { 100 | fs.mkdirSync(taskPath); 101 | } catch (e) { 102 | if (e.code !== 'EEXIST') { throw e; } 103 | } 104 | copyTaskFile(path.join(taskPath, 'tasks.json')); 105 | } else if (err) { 106 | vscode.window.showErrorMessage('When checking if .vscode/ exists: ' + err); 107 | } else if (stats.isDirectory()) { 108 | 109 | taskPath = path.join(taskPath, 'tasks.json'); 110 | 111 | fs.stat(taskPath, (err, stats) => { 112 | if (err && err.code === 'ENOENT') { 113 | // Task file doesn't exist, creating it 114 | copyTaskFile(taskPath); 115 | } else if (err) { 116 | vscode.window.showErrorMessage('When checking if tasks.json exists: ' + err); 117 | } else if (stats.isFile()) { 118 | return vscode.window.showErrorMessage('tasks.json already exists. Overwrite it?', 'Yes').then((item: string | undefined) => { 119 | if (item === 'Yes') { 120 | copyTaskFile(taskPath); 121 | } 122 | }); 123 | } 124 | }); 125 | } 126 | }); 127 | }); 128 | }); 129 | context.subscriptions.push(create_task_file); 130 | 131 | let run_task_file = vscode.commands.registerCommand('processing.RunTaskFile', () => { 132 | checkIfProjectOpen((root: vscode.WorkspaceFolder) => { 133 | const cmd = `${processingCommand} ${buildProcessingArgs(root.uri.fsPath).join(' ')}`; 134 | child_process.exec(cmd, (err, stdout, stderr) => { 135 | if (err) { 136 | console.error(err); 137 | return; 138 | } 139 | console.log(stdout); 140 | }); 141 | }); 142 | }); 143 | context.subscriptions.push(run_task_file); 144 | 145 | let open_documentation = vscode.commands.registerCommand('processing.OpenExtensionDocumentation', () => { 146 | search.openURL('https://github.com/TobiahZ/processing-vscode#processing-for-visual-studio-code'); 147 | }); 148 | context.subscriptions.push(open_documentation); 149 | 150 | 151 | // Open Processing Documentation, when you already have something you want to search selected 152 | let open_docs = vscode.commands.registerTextEditorCommand('processing.OpenDocs', 153 | (textEditor: vscode.TextEditor, edit: vscode.TextEditorEdit) => { 154 | 155 | // selection[0] is the start, and selection[1] is the end 156 | let selection = textEditor.selection; 157 | if (!selection.isSingleLine) { 158 | openDocErrorMessage('Multiple lines selected, please select a class or function.'); 159 | return; 160 | } 161 | 162 | let range = undefined; 163 | if (!selection.isEmpty) { 164 | // selection is not empty, get text from it 165 | range = new vscode.Range(selection.start, selection.end); 166 | } else { 167 | // selection is empty, get any word at cursor 168 | range = textEditor.document.getWordRangeAtPosition(selection.active); 169 | } 170 | 171 | if (range === undefined) { 172 | openDocErrorMessage('Nothing is selected. Please select a class, or use \"Search Documentation\" instead!'); 173 | return; 174 | } 175 | 176 | search.openProcessingDocs(textEditor.document.lineAt(range.start.line).text, range.start.character, range.end.character); 177 | }); 178 | context.subscriptions.push(open_docs); 179 | 180 | let searchUnityDocs = vscode.commands.registerCommand('processing.SearchWebsite', () => { 181 | vscode.window.showInputBox({ 182 | prompt: 'Search Processing Website:' 183 | }).then((result: string | undefined) => { 184 | if (result !== undefined) { 185 | // Use the node module "open" to open a web browser 186 | search.openURL('docs', result); 187 | } 188 | }); 189 | }); 190 | context.subscriptions.push(searchUnityDocs); 191 | } 192 | 193 | // this method is called when your extension is deactivated 194 | export function deactivate() { 195 | } 196 | -------------------------------------------------------------------------------- /src/processing-tasks.ts: -------------------------------------------------------------------------------- 1 | import * as path from 'path'; 2 | 3 | /** 4 | * Dynamically build the args to pass to the `processing-java` command. 5 | * 6 | * @param base the base directory of the sketch 7 | */ 8 | export function buildProcessingArgs(base: string) { 9 | return [ 10 | '--force', 11 | `--sketch=${base}`, 12 | path.join(`--output=${base}`, 'out'), 13 | '--run' 14 | ]; 15 | } 16 | 17 | export const processingCommand = 'processing-java'; 18 | 19 | export const processingTaskFilename = 'ProcessingTasks.json'; -------------------------------------------------------------------------------- /src/search.ts: -------------------------------------------------------------------------------- 1 | 2 | let processingorgDocs = 'https://processing.org/reference/'; 3 | let processingorgSearchGoogle = 'https://www.google.com/search?as_sitesearch=processing.org&as_q='; 4 | let processingorgSearchDuckDuckGo = 'https://duckduckgo.com/?q=!processing+%5C'; 5 | let p5jsDocs = 'https://p5js.org/reference/'; 6 | let p5jsSearchGoogle = 'https://www.google.com/search?as_sitesearch=p5js.org&as_q='; 7 | let p5jsSearchDuckDuckGo = 'https://duckduckgo.com/?q=!p5+'; 8 | 9 | import * as vscode from 'vscode'; 10 | 11 | export async function openURL(search_base?: string, s?: string) { 12 | if (search_base === 'open') { await vscode.env.openExternal(vscode.Uri.parse(s as string)); } else { 13 | const config = vscode.workspace.getConfiguration('processing'); 14 | let processingDocs = String(config.get('docs')); 15 | 16 | if (!s) { 17 | if (processingDocs === 'p5js.org') { 18 | s = p5jsDocs; 19 | } 20 | else { 21 | s = processingorgDocs; 22 | } 23 | } 24 | else { 25 | let searchEngine = String(config.get('search')); 26 | 27 | if (searchEngine === 'DuckDuckGo') { 28 | if (processingDocs === 'p5js.org') { 29 | s = p5jsSearchDuckDuckGo + s; 30 | } 31 | else { 32 | s = processingorgSearchDuckDuckGo + s; 33 | } 34 | } 35 | else { 36 | if (processingDocs === 'p5js.org') { 37 | s = p5jsSearchGoogle + s; 38 | } 39 | else { 40 | s = processingorgSearchGoogle + s; 41 | } 42 | } 43 | } 44 | 45 | await vscode.env.openExternal(vscode.Uri.parse(s)); 46 | } 47 | return true; 48 | } 49 | 50 | // Slice and Trim 51 | export function prepareInput(input: string, start: number, end: number) { 52 | // input is the whole line, part of which is selected by the user (defined by star/end) 53 | 54 | if (start >= end) { return ''; } 55 | 56 | // Slice to the selection 57 | input = input.slice(start, end); 58 | 59 | // Trim white space 60 | input = input.trim(); 61 | 62 | // Possible future addition: 63 | // Check right here if valid variable/function name to search? 64 | 65 | // Everything looks good by this point, so time to open a web browser! 66 | return input; 67 | } 68 | 69 | export function openProcessingDocs(input: string, start: number, end: number) { 70 | // Use the node module "opn" to open a web browser 71 | openURL('docs', prepareInput(input, start, end)); 72 | } 73 | -------------------------------------------------------------------------------- /src/test/runTest.ts: -------------------------------------------------------------------------------- 1 | import * as path from 'path'; 2 | 3 | import { runTests } from 'vscode-test'; 4 | 5 | async function main() { 6 | try { 7 | // The folder containing the Extension Manifest package.json 8 | // Passed to `--extensionDevelopmentPath` 9 | const extensionDevelopmentPath = path.resolve(__dirname, '../../'); 10 | 11 | // The path to test runner 12 | // Passed to --extensionTestsPath 13 | const extensionTestsPath = path.resolve(__dirname, './suite/index'); 14 | 15 | // Download VS Code, unzip it and run the integration test 16 | await runTests({ extensionDevelopmentPath, extensionTestsPath }); 17 | } catch (err) { 18 | console.error('Failed to run tests'); 19 | process.exit(1); 20 | } 21 | } 22 | 23 | main(); 24 | -------------------------------------------------------------------------------- /src/test/suite/extension.test.ts: -------------------------------------------------------------------------------- 1 | import * as assert from 'assert'; 2 | import { before } from 'mocha'; 3 | 4 | // You can import and use all API from the 'vscode' module 5 | // as well as import your extension to test it 6 | import * as vscode from 'vscode'; 7 | // import * as myExtension from '../extension'; 8 | 9 | suite('Extension Test Suite', () => { 10 | before(() => { 11 | vscode.window.showInformationMessage('Start all tests.'); 12 | }); 13 | 14 | test('Sample test', () => { 15 | assert.equal(-1, [1, 2, 3].indexOf(5)); 16 | assert.equal(-1, [1, 2, 3].indexOf(0)); 17 | }); 18 | }); 19 | -------------------------------------------------------------------------------- /src/test/suite/index.ts: -------------------------------------------------------------------------------- 1 | import * as path from 'path'; 2 | import * as Mocha from 'mocha'; 3 | import * as glob from 'glob'; 4 | 5 | export function run(): Promise { 6 | // Create the mocha test 7 | const mocha = new Mocha({ 8 | ui: 'tdd', 9 | }); 10 | mocha.useColors(true); 11 | 12 | const testsRoot = path.resolve(__dirname, '..'); 13 | 14 | return new Promise((c, e) => { 15 | glob('**/**.test.js', { cwd: testsRoot }, (err, files) => { 16 | if (err) { 17 | return e(err); 18 | } 19 | 20 | // Add files to the test suite 21 | files.forEach(f => mocha.addFile(path.resolve(testsRoot, f))); 22 | 23 | try { 24 | // Run the mocha test 25 | mocha.run(failures => { 26 | if (failures > 0) { 27 | e(new Error(`${failures} tests failed.`)); 28 | } else { 29 | c(); 30 | } 31 | }); 32 | } catch (err) { 33 | e(err); 34 | } 35 | }); 36 | }); 37 | } 38 | -------------------------------------------------------------------------------- /syntaxes/pde.tmLanguage: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | fileTypes 6 | 7 | pde 8 | java 9 | 10 | foldingStartMarker 11 | (\{\s*(//.*)?$|^\s*// \{\{\{) 12 | foldingStopMarker 13 | ^\s*(\}|// \}\}\}$) 14 | name 15 | Processing 16 | patterns 17 | 18 | 19 | captures 20 | 21 | 1 22 | 23 | name 24 | keyword.other.package.java 25 | 26 | 2 27 | 28 | name 29 | storage.modifier.package.java 30 | 31 | 3 32 | 33 | name 34 | punctuation.terminator.java 35 | 36 | 37 | match 38 | ^\s*(package)\b(?:\s*([^ ;$]+)\s*(;)?)? 39 | name 40 | meta.package.java 41 | 42 | 43 | captures 44 | 45 | 1 46 | 47 | name 48 | keyword.other.import.processing 49 | 50 | 2 51 | 52 | name 53 | storage.modifier.import.processing 54 | 55 | 3 56 | 57 | name 58 | punctuation.terminator.processing 59 | 60 | 61 | match 62 | ^\s*(import)\b(?:\s*([^ ;$]+)\s*(;)?)? 63 | name 64 | meta.import.processing 65 | 66 | 67 | include 68 | #class-body 69 | 70 | 71 | repository 72 | 73 | all-types 74 | 75 | patterns 76 | 77 | 78 | include 79 | #simple-arrays 80 | 81 | 82 | include 83 | #simple-types 84 | 85 | 86 | include 87 | #object-types 88 | 89 | 90 | 91 | annotations 92 | 93 | patterns 94 | 95 | 96 | begin 97 | (@[^ (]+)(\() 98 | beginCaptures 99 | 100 | 1 101 | 102 | name 103 | storage.type.annotation.processing 104 | 105 | 2 106 | 107 | name 108 | punctuation.definition.annotation-arguments.begin.processing 109 | 110 | 111 | end 112 | (\)) 113 | endCaptures 114 | 115 | 1 116 | 117 | name 118 | punctuation.definition.annotation-arguments.end.processing 119 | 120 | 121 | name 122 | meta.declaration.annotation.processing 123 | patterns 124 | 125 | 126 | captures 127 | 128 | 1 129 | 130 | name 131 | constant.other.key.processing 132 | 133 | 2 134 | 135 | name 136 | keyword.operator.assignment.processing 137 | 138 | 139 | match 140 | (\w*)\s*(=) 141 | 142 | 143 | include 144 | #code 145 | 146 | 147 | match 148 | , 149 | name 150 | punctuation.seperator.property.processing 151 | 152 | 153 | 154 | 155 | match 156 | @\w* 157 | name 158 | storage.type.annotation.processing 159 | 160 | 161 | 162 | anonymous-classes-and-new 163 | 164 | begin 165 | \bnew\b 166 | beginCaptures 167 | 168 | 0 169 | 170 | name 171 | keyword.control.new.processing 172 | 173 | 174 | end 175 | (?<=\)|\])(?!\s*{)|(?<=})|(?=;) 176 | patterns 177 | 178 | 179 | begin 180 | (\w+)\s*(?=\[) 181 | beginCaptures 182 | 183 | 1 184 | 185 | name 186 | storage.type.processing 187 | 188 | 189 | end 190 | }|(?=;|\)) 191 | patterns 192 | 193 | 194 | begin 195 | \[ 196 | end 197 | \] 198 | patterns 199 | 200 | 201 | include 202 | #inner-code 203 | 204 | 205 | 206 | 207 | begin 208 | { 209 | end 210 | (?=}) 211 | patterns 212 | 213 | 214 | include 215 | #code 216 | 217 | 218 | 219 | 220 | 221 | 222 | begin 223 | (?=\w.*\() 224 | end 225 | (?<=\)) 226 | patterns 227 | 228 | 229 | include 230 | #object-types 231 | 232 | 233 | begin 234 | \( 235 | beginCaptures 236 | 237 | 1 238 | 239 | name 240 | storage.type.processing 241 | 242 | 243 | end 244 | \) 245 | patterns 246 | 247 | 248 | include 249 | #inner-code 250 | 251 | 252 | 253 | 254 | 255 | 256 | begin 257 | { 258 | end 259 | } 260 | name 261 | meta.inner-class.processing 262 | patterns 263 | 264 | 265 | include 266 | #class-body 267 | 268 | 269 | 270 | 271 | 272 | assertions 273 | 274 | patterns 275 | 276 | 277 | begin 278 | \b(assert)\s 279 | beginCaptures 280 | 281 | 1 282 | 283 | name 284 | keyword.control.assert.processing 285 | 286 | 287 | end 288 | $ 289 | name 290 | meta.declaration.assertion.processing 291 | patterns 292 | 293 | 294 | match 295 | : 296 | name 297 | keyword.operator.assert.expression-seperator.processing 298 | 299 | 300 | include 301 | #code 302 | 303 | 304 | 305 | 306 | 307 | class 308 | 309 | begin 310 | (?=\w?[\w\s]*(?:class|(?:@)?interface)\s+\w+) 311 | end 312 | } 313 | endCaptures 314 | 315 | 0 316 | 317 | name 318 | punctuation.section.class.end.processing 319 | 320 | 321 | name 322 | meta.class.processing 323 | patterns 324 | 325 | 326 | include 327 | #storage-modifiers 328 | 329 | 330 | include 331 | #comments 332 | 333 | 334 | captures 335 | 336 | 1 337 | 338 | name 339 | storage.modifier.processing 340 | 341 | 2 342 | 343 | name 344 | entity.name.type.class.processing 345 | 346 | 347 | match 348 | (class|(?:@)?interface)\s+(\w+) 349 | name 350 | meta.class.identifier.processing 351 | 352 | 353 | begin 354 | extends 355 | beginCaptures 356 | 357 | 0 358 | 359 | name 360 | storage.modifier.extends.processing 361 | 362 | 363 | end 364 | (?={|implements) 365 | name 366 | meta.definition.class.inherited.classes.processing 367 | patterns 368 | 369 | 370 | include 371 | #object-types-inherited 372 | 373 | 374 | include 375 | #comments 376 | 377 | 378 | 379 | 380 | begin 381 | (implements)\s 382 | beginCaptures 383 | 384 | 1 385 | 386 | name 387 | storage.modifier.implements.processing 388 | 389 | 390 | end 391 | (?=\s*extends|\{) 392 | name 393 | meta.definition.class.implemented.interfaces.processing 394 | patterns 395 | 396 | 397 | include 398 | #object-types-inherited 399 | 400 | 401 | include 402 | #comments 403 | 404 | 405 | 406 | 407 | begin 408 | { 409 | end 410 | (?=}) 411 | name 412 | meta.class.body.processing 413 | patterns 414 | 415 | 416 | include 417 | #class-body 418 | 419 | 420 | 421 | 422 | 423 | enum 424 | 425 | begin 426 | (?=\w?[\w\s]*(?:enum)\s+\w+) 427 | end 428 | } 429 | endCaptures 430 | 431 | 0 432 | 433 | name 434 | punctuation.section.class.end.processing 435 | 436 | 437 | name 438 | meta.class.processing 439 | patterns 440 | 441 | 442 | include 443 | #storage-modifiers 444 | 445 | 446 | include 447 | #comments 448 | 449 | 450 | captures 451 | 452 | 1 453 | 454 | name 455 | storage.modifier.processing 456 | 457 | 2 458 | 459 | name 460 | entity.name.type.class.processing 461 | 462 | 463 | match 464 | (enum)\s+(\w+) 465 | name 466 | meta.class.identifier.processing 467 | 468 | 469 | begin 470 | extends 471 | beginCaptures 472 | 473 | 0 474 | 475 | name 476 | storage.modifier.extends.processing 477 | 478 | 479 | end 480 | (?={|implements) 481 | name 482 | meta.definition.class.inherited.classes.processing 483 | patterns 484 | 485 | 486 | include 487 | #object-types-inherited 488 | 489 | 490 | include 491 | #comments 492 | 493 | 494 | 495 | 496 | begin 497 | (implements)\s 498 | beginCaptures 499 | 500 | 1 501 | 502 | name 503 | storage.modifier.implements.processing 504 | 505 | 506 | end 507 | (?=\s*extends|\{) 508 | name 509 | meta.definition.class.implemented.interfaces.processing 510 | patterns 511 | 512 | 513 | include 514 | #object-types-inherited 515 | 516 | 517 | include 518 | #comments 519 | 520 | 521 | 522 | 523 | begin 524 | { 525 | end 526 | (?=}) 527 | name 528 | meta.class.body.processing 529 | patterns 530 | 531 | 532 | include 533 | #enum-body 534 | 535 | 536 | 537 | 538 | 539 | class-body 540 | 541 | patterns 542 | 543 | 544 | include 545 | #comments 546 | 547 | 548 | include 549 | #class 550 | 551 | 552 | include 553 | #enum 554 | 555 | 556 | include 557 | #methods 558 | 559 | 560 | include 561 | #annotations 562 | 563 | 564 | include 565 | #storage-modifiers 566 | 567 | 568 | include 569 | #code 570 | 571 | 572 | 573 | enum-body 574 | 575 | patterns 576 | 577 | 578 | include 579 | #comments 580 | 581 | 582 | include 583 | #class 584 | 585 | 586 | include 587 | #enum 588 | 589 | 590 | include 591 | #enums 592 | 593 | 594 | include 595 | #methods 596 | 597 | 598 | include 599 | #annotations 600 | 601 | 602 | include 603 | #storage-modifiers 604 | 605 | 606 | include 607 | #code 608 | 609 | 610 | 611 | code 612 | 613 | patterns 614 | 615 | 616 | include 617 | #comments 618 | 619 | 620 | include 621 | #class 622 | 623 | 624 | include 625 | #enum 626 | 627 | 628 | begin 629 | { 630 | end 631 | } 632 | patterns 633 | 634 | 635 | include 636 | #code 637 | 638 | 639 | 640 | 641 | include 642 | #assertions 643 | 644 | 645 | include 646 | #parens 647 | 648 | 649 | include 650 | #constants-and-special-vars 651 | 652 | 653 | include 654 | #anonymous-classes-and-new 655 | 656 | 657 | include 658 | #keywords 659 | 660 | 661 | include 662 | #operators 663 | 664 | 665 | include 666 | #storage-modifiers 667 | 668 | 669 | include 670 | #strings 671 | 672 | 673 | include 674 | #all-types 675 | 676 | 677 | include 678 | #function-calls 679 | 680 | 681 | 682 | inner-code 683 | 684 | patterns 685 | 686 | 687 | include 688 | #comments 689 | 690 | 691 | include 692 | #assertions 693 | 694 | 695 | include 696 | #parens 697 | 698 | 699 | include 700 | #constants-and-special-vars 701 | 702 | 703 | include 704 | #anonymous-classes-and-new 705 | 706 | 707 | include 708 | #keywords 709 | 710 | 711 | include 712 | #inner-operators 713 | 714 | 715 | include 716 | #storage-modifiers 717 | 718 | 719 | include 720 | #strings 721 | 722 | 723 | include 724 | #all-types 725 | 726 | 727 | include 728 | #function-calls 729 | 730 | 731 | 732 | comments 733 | 734 | patterns 735 | 736 | 737 | captures 738 | 739 | 0 740 | 741 | name 742 | punctuation.definition.comment.processing 743 | 744 | 745 | match 746 | /\*\*/ 747 | name 748 | comment.block.empty.processing 749 | 750 | 751 | include 752 | text.html.javadoc 753 | 754 | 755 | include 756 | #comments-inline 757 | 758 | 759 | 760 | comments-inline 761 | 762 | patterns 763 | 764 | 765 | begin 766 | /\* 767 | captures 768 | 769 | 0 770 | 771 | name 772 | punctuation.definition.comment.processing 773 | 774 | 775 | end 776 | \*/ 777 | name 778 | comment.block.processing 779 | 780 | 781 | captures 782 | 783 | 1 784 | 785 | name 786 | comment.line.double-slash.processing 787 | 788 | 2 789 | 790 | name 791 | punctuation.definition.comment.processing 792 | 793 | 794 | match 795 | \s*((//).*$\n?) 796 | 797 | 798 | 799 | constants-and-special-vars 800 | 801 | patterns 802 | 803 | 804 | match 805 | \b(true|false|null)\b 806 | name 807 | constant.language.processing 808 | 809 | 810 | match 811 | \b(this|super)\b 812 | name 813 | variable.language.processing 814 | 815 | 816 | match 817 | \b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)([LlFfUuDd]|UL|ul)?\b 818 | name 819 | constant.numeric.processing 820 | 821 | 822 | match 823 | (#[0-9a-fA-F]+)\b 824 | name 825 | constant.numeric.processing 826 | 827 | 828 | captures 829 | 830 | 1 831 | 832 | name 833 | keyword.operator.dereference.processing 834 | 835 | 836 | match 837 | (\.)?\b([A-Z][A-Z0-9_]+)(?!<|\.class|\s*\w+\s*=)\b 838 | name 839 | constant.other.processing 840 | 841 | 842 | 843 | enums 844 | 845 | begin 846 | ^(?=\s*[A-Z0-9_]+\s*({|\(|,)) 847 | end 848 | (?=;|}) 849 | patterns 850 | 851 | 852 | begin 853 | \w+ 854 | beginCaptures 855 | 856 | 0 857 | 858 | name 859 | constant.other.enum.java 860 | 861 | 862 | end 863 | (?=,|;|}) 864 | name 865 | meta.enum.java 866 | patterns 867 | 868 | 869 | include 870 | #parens 871 | 872 | 873 | begin 874 | { 875 | end 876 | } 877 | patterns 878 | 879 | 880 | include 881 | #class-body 882 | 883 | 884 | 885 | 886 | 887 | 888 | 889 | keywords 890 | 891 | patterns 892 | 893 | 894 | match 895 | \b(try|catch|finally|throw)\b 896 | name 897 | keyword.control.catch-exception.processing 898 | 899 | 900 | match 901 | \?|: 902 | name 903 | keyword.control.processing 904 | 905 | 906 | match 907 | \b(return|break|case|continue|default|do|while|for|switch|if|else)\b 908 | name 909 | keyword.control.processing 910 | 911 | 912 | match 913 | \b(displayHeight|displayWidth|focused|frameCount|frameRate|height|key|keyCode|keyPressed|mouseButton|mousePressed|mouseX|mouseY|online|pixelHeight|pixelWidth|pixels|pmouseX|pmouseY|screen|width)\b 914 | name 915 | constant.other.processing 916 | 917 | 918 | match 919 | \b(ADD|ALIGN_CENTER|ALIGN_LEFT|ALIGN_RIGHT|ALPHA|ALPHA_MASK|ALT|AMBIENT|ARGB|ARROW|BACKSPACE|BEVEL|BLEND|BLUE_MASK|BLUR|CENTER|CENTER_RADIUS|CHATTER|CODED|COMPLAINT|COMPONENT|COMPOSITE|CONCAVE_POLYGON|CONTROL|CONVEX_POLYGON|CORNER|CORNERS|CROSS|CUSTOM|DARKEST|DEGREES|DEG_TO_RAD|DELETE|DIFFERENCE|DIFFUSE|DISABLED|DISABLE_TEXT_SMOOTH|DOWN|ENTER|EPSILON|ESC|FX2D|GIF|GREEN_MASK|GREY|HALF|HALF_PI|HAND|HARD_LIGHT|HSB|IMAGE|INVERT|JAVA2D|JPEG|LEFT|LIGHTEST|LINES|LINE_LOOP|LINE_STRIP|MAX_FLOAT|MITER|MODEL|MOVE|MULTIPLY|NORMALIZED|NO_DEPTH_TEST|NTSC|ONE|OPAQUE|OPENGL|ORTHOGRAPHIC|OVERLAY|P2D|P3D|PAL|PDF|PERSPECTIVE|PI|PIXEL_CENTER|POINTS|POLYGON|POSTERIZE|PROBLEM|PROJECT|QUADS|QUAD_STRIP|QUARTER_PI|RADIANS|RAD_TO_DEG|RED_MASK|REPLACE|RETURN|RGB|RIGHT|ROUND|SCREEN|SECAM|SHIFT|SOFT_LIGHT|SPAN|SPECULAR|SQUARE|SUBTRACT|SVIDEO|TAB|TARGA|TEXT|TFF|THIRD_PI|THRESHOLD|TIFF|TRIANGLES|TRIANGLE_FAN|TRIANGLE_STRIP|TUNER|TAU|TWO|TWO_PI|UP|WAIT|WHITESPACE)\b 920 | name 921 | support.constant.processing 922 | 923 | 924 | match 925 | \b(Array|Character|FloatDict|FloatList|IntDict|IntList|Integer|JSONArray|JSONObject|Math|Object|PFont|PGraphics|PImage|PShader|PShape|PSound|PVector|StringBuffer|StringDict|StringList|Table|TableRow|Thread|XML)\b 926 | name 927 | support.class.processing 928 | 929 | 930 | match 931 | \b(instanceof)\b 932 | name 933 | keyword.operator.processing 934 | 935 | 936 | 937 | operators 938 | 939 | patterns 940 | 941 | 942 | include 943 | #common-operators 944 | 945 | 946 | begin 947 | = 948 | beginCaptures 949 | 950 | 0 951 | 952 | name 953 | keyword.operator.assignment.processing 954 | 955 | 956 | end 957 | ; 958 | patterns 959 | 960 | 961 | include 962 | #inner-code 963 | 964 | 965 | 966 | 967 | match 968 | ; 969 | name 970 | punctuation.terminator.processing 971 | 972 | 973 | 974 | inner-operators 975 | 976 | patterns 977 | 978 | 979 | include 980 | #common-operators 981 | 982 | 983 | match 984 | (=) 985 | name 986 | keyword.operator.assignment.processing 987 | 988 | 989 | 990 | common-operators 991 | 992 | patterns 993 | 994 | 995 | match 996 | (==|!=|<=|>=|<>|<|>) 997 | name 998 | keyword.operator.comparison.processing 999 | 1000 | 1001 | match 1002 | (\-\-|\+\+) 1003 | name 1004 | keyword.operator.increment-decrement.processing 1005 | 1006 | 1007 | match 1008 | (\+\=|\-\=|\*\=|\/\=) 1009 | name 1010 | keyword.operator.arithmetic-assignment.processing 1011 | 1012 | 1013 | match 1014 | (\-|\+|\*|\/|%) 1015 | name 1016 | keyword.operator.arithmetic.processing 1017 | 1018 | 1019 | match 1020 | (!|&&|\|\|) 1021 | name 1022 | keyword.operator.logical.processing 1023 | 1024 | 1025 | match 1026 | (?<=\S)\.(?=\S) 1027 | name 1028 | keyword.operator.dereference.processing 1029 | 1030 | 1031 | 1032 | function-calls 1033 | 1034 | patterns 1035 | 1036 | 1037 | captures 1038 | 1039 | 1 1040 | 1041 | name 1042 | support.function.any-method.processing 1043 | 1044 | 1045 | match 1046 | (?x) 1047 | ( 1048 | (?!while|for|do|if|else|switch|catch|enumerate|return|r?iterate)(?: \b[A-Za-z_][A-Za-z0-9_]*+\b | :: )*+ # actual name 1049 | ) 1050 | \s*(?:\() 1051 | name 1052 | meta.function-call.processing 1053 | 1054 | 1055 | 1056 | methods 1057 | 1058 | begin 1059 | (?!new)(?=\w.*\s+)(?=[^=]+\() 1060 | end 1061 | }|(?=;) 1062 | name 1063 | meta.method.processing 1064 | patterns 1065 | 1066 | 1067 | include 1068 | #storage-modifiers 1069 | 1070 | 1071 | begin 1072 | (\w+)\s*\( 1073 | beginCaptures 1074 | 1075 | 1 1076 | 1077 | name 1078 | entity.name.function.processing 1079 | 1080 | 1081 | end 1082 | \) 1083 | name 1084 | meta.method.identifier.processing 1085 | patterns 1086 | 1087 | 1088 | include 1089 | #parameters 1090 | 1091 | 1092 | 1093 | 1094 | begin 1095 | (?=\w.*\s+\w+\s*\() 1096 | end 1097 | (?=\w+\s*\() 1098 | name 1099 | meta.method.return-type.processing 1100 | patterns 1101 | 1102 | 1103 | include 1104 | #all-types 1105 | 1106 | 1107 | 1108 | 1109 | include 1110 | #throws 1111 | 1112 | 1113 | begin 1114 | { 1115 | end 1116 | (?=}) 1117 | name 1118 | meta.method.body.processing 1119 | patterns 1120 | 1121 | 1122 | include 1123 | #code 1124 | 1125 | 1126 | 1127 | 1128 | 1129 | object-types 1130 | 1131 | patterns 1132 | 1133 | 1134 | begin 1135 | \b((?:[a-z]\w*\.)*[A-Z]+\w*)< 1136 | end 1137 | >|[^\w\s,\?<\[\]] 1138 | name 1139 | storage.type.generic.processing 1140 | patterns 1141 | 1142 | 1143 | include 1144 | #object-types 1145 | 1146 | 1147 | begin 1148 | < 1149 | comment 1150 | This is to support <>'s with no actual type prefix 1151 | end 1152 | >|[^\w\s,\[\]<] 1153 | name 1154 | storage.type.generic.processing 1155 | 1156 | 1157 | 1158 | 1159 | begin 1160 | \b((?:[a-z]\w*\.)*[A-Z]+\w*)(?=\[) 1161 | end 1162 | (?=[^\]\s]) 1163 | name 1164 | storage.type.object.array.processing 1165 | patterns 1166 | 1167 | 1168 | begin 1169 | \[ 1170 | end 1171 | \] 1172 | patterns 1173 | 1174 | 1175 | include 1176 | #inner-code 1177 | 1178 | 1179 | 1180 | 1181 | 1182 | 1183 | captures 1184 | 1185 | 1 1186 | 1187 | name 1188 | keyword.operator.dereference.processing 1189 | 1190 | 1191 | match 1192 | \b(?:[a-z]\w*(\.))*[A-Z]+\w*\b 1193 | name 1194 | storage.type.processing 1195 | 1196 | 1197 | 1198 | object-types-inherited 1199 | 1200 | patterns 1201 | 1202 | 1203 | begin 1204 | \b((?:[a-z]\w*\.)*[A-Z]+\w*)< 1205 | end 1206 | >|[^\w\s,<] 1207 | name 1208 | entity.other.inherited-class.processing 1209 | patterns 1210 | 1211 | 1212 | include 1213 | #object-types 1214 | 1215 | 1216 | begin 1217 | < 1218 | comment 1219 | This is to support <>'s with no actual type prefix 1220 | end 1221 | >|[^\w\s,<] 1222 | name 1223 | storage.type.generic.processing 1224 | 1225 | 1226 | 1227 | 1228 | captures 1229 | 1230 | 1 1231 | 1232 | name 1233 | keyword.operator.dereference.processing 1234 | 1235 | 1236 | match 1237 | \b(?:[a-z]\w*(\.))*[A-Z]+\w* 1238 | name 1239 | entity.other.inherited-class.processing 1240 | 1241 | 1242 | 1243 | parameters 1244 | 1245 | patterns 1246 | 1247 | 1248 | match 1249 | final 1250 | name 1251 | storage.modifier.processing 1252 | 1253 | 1254 | include 1255 | #simple-arrays 1256 | 1257 | 1258 | include 1259 | #simple-types 1260 | 1261 | 1262 | include 1263 | #object-types 1264 | 1265 | 1266 | match 1267 | \w+ 1268 | name 1269 | variable.parameter.processing 1270 | 1271 | 1272 | 1273 | parens 1274 | 1275 | begin 1276 | \( 1277 | end 1278 | \) 1279 | patterns 1280 | 1281 | 1282 | include 1283 | #inner-code 1284 | 1285 | 1286 | 1287 | simple-arrays 1288 | 1289 | patterns 1290 | 1291 | 1292 | match 1293 | \b(?:void|boolean|byte|char|short|int|float|long|double|color|var)(\[\])*\b 1294 | name 1295 | storage.type.simple.array.processing 1296 | 1297 | 1298 | 1299 | simple-types 1300 | 1301 | patterns 1302 | 1303 | 1304 | match 1305 | \b(?:void|boolean|byte|char|short|int|float|long|double|color|var)\b 1306 | name 1307 | storage.type.simple.processing 1308 | 1309 | 1310 | 1311 | storage-modifiers 1312 | 1313 | captures 1314 | 1315 | 1 1316 | 1317 | name 1318 | storage.modifier.processing 1319 | 1320 | 1321 | match 1322 | \b(public|private|protected|static|final|native|synchronized|abstract|threadsafe|transient)\b 1323 | 1324 | strings 1325 | 1326 | patterns 1327 | 1328 | 1329 | begin 1330 | " 1331 | beginCaptures 1332 | 1333 | 0 1334 | 1335 | name 1336 | punctuation.definition.string.begin.processing 1337 | 1338 | 1339 | end 1340 | " 1341 | endCaptures 1342 | 1343 | 0 1344 | 1345 | name 1346 | punctuation.definition.string.end.processing 1347 | 1348 | 1349 | name 1350 | string.quoted.double.processing 1351 | patterns 1352 | 1353 | 1354 | match 1355 | \\. 1356 | name 1357 | constant.character.escape.processing 1358 | 1359 | 1360 | 1361 | 1362 | begin 1363 | ' 1364 | beginCaptures 1365 | 1366 | 0 1367 | 1368 | name 1369 | punctuation.definition.string.begin.processing 1370 | 1371 | 1372 | end 1373 | ' 1374 | endCaptures 1375 | 1376 | 0 1377 | 1378 | name 1379 | punctuation.definition.string.end.processing 1380 | 1381 | 1382 | name 1383 | string.quoted.single.processing 1384 | patterns 1385 | 1386 | 1387 | match 1388 | \\. 1389 | name 1390 | constant.character.escape.processing 1391 | 1392 | 1393 | 1394 | 1395 | 1396 | throws 1397 | 1398 | begin 1399 | throws 1400 | beginCaptures 1401 | 1402 | 0 1403 | 1404 | name 1405 | storage.modifier.processing 1406 | 1407 | 1408 | end 1409 | (?={|;) 1410 | name 1411 | meta.throwables.processing 1412 | patterns 1413 | 1414 | 1415 | include 1416 | #object-types 1417 | 1418 | 1419 | 1420 | values 1421 | 1422 | patterns 1423 | 1424 | 1425 | include 1426 | #strings 1427 | 1428 | 1429 | include 1430 | #object-types 1431 | 1432 | 1433 | include 1434 | #constants-and-special-vars 1435 | 1436 | 1437 | 1438 | 1439 | scopeName 1440 | source.pde 1441 | uuid 1442 | D3D6351E-1416-4AE7-8060-665C6108D2C5 1443 | 1444 | 1445 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6", 5 | "outDir": "out", 6 | "lib": [ 7 | "es6" 8 | ], 9 | "sourceMap": true, 10 | "rootDir": "src", 11 | "strict": true /* enable all strict type-checking options */ 12 | /* Additional Checks */ 13 | // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ 14 | // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ 15 | // "noUnusedParameters": true, /* Report errors on unused parameters. */ 16 | }, 17 | "exclude": [ 18 | "node_modules", 19 | ".vscode-test" 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "rules": { 3 | "no-string-throw": true, 4 | "no-unused-expression": true, 5 | "no-duplicate-variable": true, 6 | "curly": true, 7 | "class-name": true, 8 | "semicolon": [ 9 | true, 10 | "always" 11 | ], 12 | "triple-equals": true 13 | }, 14 | "defaultSeverity": "warning" 15 | } 16 | --------------------------------------------------------------------------------