├── .github └── workflows │ ├── publish-vsx-latest.yml │ ├── publish-vsx-next.yml │ ├── publish-vsx-specific-latest.yml │ └── publish-vsx-specific-next.yml ├── .gitignore ├── .gitmodules ├── LICENSE ├── README.md ├── doc ├── Building.md └── Publishing.md ├── package.json ├── src ├── archive-source.js ├── bundle.js ├── check-dependencies.js ├── checkout-latest-vscode.js ├── compile.js ├── create-extension-pack.js ├── download.js ├── get-external-builtins.js ├── package-vsix.js ├── paths.js ├── publish-vsix.js ├── version.js └── vscode-bundle.js ├── tsconfig.json └── yarn.lock /.github/workflows/publish-vsx-latest.yml: -------------------------------------------------------------------------------- 1 | name: ovsx-solid---publish-vscode-built-in-extensions 2 | on: 3 | schedule: 4 | - cron: "0 0 * * *" 5 | push: 6 | branches: 7 | - master 8 | env: 9 | NODE_OPTIONS: --max-old-space-size=8192 10 | jobs: 11 | linux: 12 | runs-on: ubuntu-latest 13 | env: 14 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 15 | OVSX_PAT: ${{ secrets.OVSX_PAT}} 16 | steps: 17 | - uses: actions/checkout@v1 18 | - run: | 19 | git submodule init 20 | git submodule update 21 | name: Checkout VS Code 22 | # should be aligned with https://github.com/microsoft/vscode/blob/f1a4fb101478ce6ec82fe9627c43efbf9e98c813/.github/workflows/ci.yml#L108 23 | - run: | 24 | sudo apt-get update 25 | sudo apt-get install -y libxkbfile-dev pkg-config libsecret-1-dev libxss1 dbus xvfb libgtk-3-0 26 | sudo cp vscode/build/azure-pipelines/linux/xvfb.init /etc/init.d/xvfb 27 | sudo chmod +x /etc/init.d/xvfb 28 | sudo update-rc.d xvfb defaults 29 | sudo service xvfb start 30 | name: Setup Build Environment 31 | - uses: actions/setup-node@v4 32 | with: 33 | node-version-file: vscode/.nvmrc 34 | - run: yarn 35 | name: Install Dependencies 36 | - run: | 37 | cd vscode 38 | git fetch --tags 39 | cd .. 40 | yarn checkout-latest-vscode-release 41 | name: Update vscode Repo and Checkout Latest Official Release 42 | - run: yarn build:extensions 43 | name: Bundle Extensions 44 | - run: yarn package-vsix:latest 45 | name: Package Solid Version of Extensions 46 | - run: yarn create-extension-pack:latest 47 | name: Create built-in extensions pack 48 | # - run: yarn publish:vsix 49 | # name: Publish Extensions to open-vsx.org 50 | -------------------------------------------------------------------------------- /.github/workflows/publish-vsx-next.yml: -------------------------------------------------------------------------------- 1 | name: ovsx-preview--publish-vscode-built-in-extensions 2 | on: 3 | schedule: 4 | - cron: "30 0 * * *" 5 | push: 6 | branches: 7 | - master 8 | env: 9 | NODE_OPTIONS: --max-old-space-size=8192 10 | jobs: 11 | linux: 12 | runs-on: ubuntu-latest 13 | env: 14 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 15 | OVSX_PAT: ${{ secrets.OVSX_PAT}} 16 | steps: 17 | - uses: actions/checkout@v1 18 | - run: | 19 | git submodule init 20 | git submodule update 21 | name: Checkout VS Code 22 | # should be aligned with https://github.com/microsoft/vscode/blob/f1a4fb101478ce6ec82fe9627c43efbf9e98c813/.github/workflows/ci.yml#L108 23 | - run: | 24 | sudo apt-get update 25 | sudo apt-get install -y libxkbfile-dev pkg-config libsecret-1-dev libxss1 dbus xvfb libgtk-3-0 26 | sudo cp vscode/build/azure-pipelines/linux/xvfb.init /etc/init.d/xvfb 27 | sudo chmod +x /etc/init.d/xvfb 28 | sudo update-rc.d xvfb defaults 29 | sudo service xvfb start 30 | name: Setup Build Environment 31 | - uses: actions/setup-node@v4 32 | with: 33 | node-version-file: vscode/.nvmrc 34 | - run: | 35 | cd vscode 36 | git fetch --tags 37 | git reset --hard origin/main 38 | name: Reset to latest vscode main 39 | - run: | 40 | yarn 41 | yarn build:extensions 42 | name: Bundle Extensions from vscode main 43 | - run: yarn package-vsix:next 44 | name: Package Preview Version of Extensions 45 | - run: yarn create-extension-pack:next 46 | name: Create built-in extensions pack 47 | # - run: yarn publish:vsix 48 | # name: Publish Extensions to open-vsx.org 49 | -------------------------------------------------------------------------------- /.github/workflows/publish-vsx-specific-latest.yml: -------------------------------------------------------------------------------- 1 | name: ovsx-solid---publish-vscode-built-in-extensions-specific-version 2 | on: 3 | push: 4 | branches: 5 | - ovsx-publish 6 | env: 7 | NODE_OPTIONS: --max-old-space-size=8192 8 | jobs: 9 | linux: 10 | runs-on: ubuntu-latest 11 | env: 12 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 13 | OVSX_PAT: ${{ secrets.OVSX_PAT}} 14 | steps: 15 | - uses: actions/checkout@v1 16 | - run: | 17 | git submodule init 18 | git submodule update 19 | name: Checkout VS Code 20 | # should be aligned with https://github.com/microsoft/vscode/blob/f1a4fb101478ce6ec82fe9627c43efbf9e98c813/.github/workflows/ci.yml#L108 21 | - run: | 22 | sudo apt-get update 23 | sudo apt-get install -y libxkbfile-dev pkg-config libsecret-1-dev libxss1 dbus xvfb libgtk-3-0 24 | sudo cp vscode/build/azure-pipelines/linux/xvfb.init /etc/init.d/xvfb 25 | sudo chmod +x /etc/init.d/xvfb 26 | sudo update-rc.d xvfb defaults 27 | sudo service xvfb start 28 | name: Setup Build Environment 29 | - uses: actions/setup-node@v4 30 | with: 31 | node-version-file: vscode/.nvmrc 32 | - run: npx ovsx --version 33 | name: Check ovsx version 34 | - run: | 35 | yarn 36 | yarn build:extensions 37 | name: Bundle Extensions 38 | - run: yarn package-vsix:latest 39 | name: Package Solid Version of Extensions 40 | - run: yarn create-extension-pack:latest 41 | name: Create built-in extensions pack 42 | - run: yarn publish:vsix 43 | name: Publish Extensions to open-vsx.org 44 | -------------------------------------------------------------------------------- /.github/workflows/publish-vsx-specific-next.yml: -------------------------------------------------------------------------------- 1 | name: ovsx-solid---publish-vscode-built-in-extensions-specific-version-next 2 | on: 3 | push: 4 | branches: 5 | - ovsx-publish-next 6 | env: 7 | NODE_OPTIONS: --max-old-space-size=8192 8 | jobs: 9 | linux: 10 | runs-on: ubuntu-latest 11 | env: 12 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 13 | OVSX_PAT: ${{ secrets.OVSX_PAT}} 14 | steps: 15 | - uses: actions/checkout@v1 16 | - run: | 17 | git submodule init 18 | git submodule update 19 | name: Checkout VS Code 20 | # should be aligned with https://github.com/microsoft/vscode/blob/f1a4fb101478ce6ec82fe9627c43efbf9e98c813/.github/workflows/ci.yml#L108 21 | - run: | 22 | sudo apt-get update 23 | sudo apt-get install -y libxkbfile-dev pkg-config libsecret-1-dev libxss1 dbus xvfb libgtk-3-0 24 | sudo cp vscode/build/azure-pipelines/linux/xvfb.init /etc/init.d/xvfb 25 | sudo chmod +x /etc/init.d/xvfb 26 | sudo update-rc.d xvfb defaults 27 | sudo service xvfb start 28 | name: Setup Build Environment 29 | - uses: actions/setup-node@v4 30 | with: 31 | node-version-file: vscode/.nvmrc 32 | - run: npx ovsx --version 33 | name: Check ovsx version 34 | - run: | 35 | yarn 36 | yarn build:extensions 37 | name: Bundle Extensions 38 | - run: yarn package-vsix:next 39 | name: Package Intermediate Version of Extensions 40 | - run: yarn create-extension-pack:next 41 | name: Create built-in extensions pack 42 | - run: yarn publish:vsix 43 | name: Publish Extensions to open-vsx.org 44 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | lib 3 | *.log 4 | dist 5 | external-builtins/ 6 | vscode-builtin-extensions 7 | dash-licenses.jar 8 | *.zip 9 | summary.txt 10 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "vscode"] 2 | path = vscode 3 | url = https://github.com/Microsoft/vscode.git 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | This program and the accompanying materials are made available under the 2 | terms of the Eclipse Public License v. 2.0 which is available at 3 | https://www.eclipse.org/legal/epl-2.0, or GNU General Public License, version 2 4 | with the GNU Classpath Exception which is available at https://www.gnu.org/software/classpath/license.html. 5 | 6 | # Eclipse Public License - v 2.0 7 | 8 | THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE 9 | PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION 10 | OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. 11 | 12 | 1. DEFINITIONS 13 | 14 | "Contribution" means: 15 | 16 | a) in the case of the initial Contributor, the initial content 17 | Distributed under this Agreement, and 18 | 19 | b) in the case of each subsequent Contributor: 20 | i) changes to the Program, and 21 | ii) additions to the Program; 22 | where such changes and/or additions to the Program originate from 23 | and are Distributed by that particular Contributor. A Contribution 24 | "originates" from a Contributor if it was added to the Program by 25 | such Contributor itself or anyone acting on such Contributor's behalf. 26 | Contributions do not include changes or additions to the Program that 27 | are not Modified Works. 28 | 29 | "Contributor" means any person or entity that Distributes the Program. 30 | 31 | "Licensed Patents" mean patent claims licensable by a Contributor which 32 | are necessarily infringed by the use or sale of its Contribution alone 33 | or when combined with the Program. 34 | 35 | "Program" means the Contributions Distributed in accordance with this 36 | Agreement. 37 | 38 | "Recipient" means anyone who receives the Program under this Agreement 39 | or any Secondary License (as applicable), including Contributors. 40 | 41 | "Derivative Works" shall mean any work, whether in Source Code or other 42 | form, that is based on (or derived from) the Program and for which the 43 | editorial revisions, annotations, elaborations, or other modifications 44 | represent, as a whole, an original work of authorship. 45 | 46 | "Modified Works" shall mean any work in Source Code or other form that 47 | results from an addition to, deletion from, or modification of the 48 | contents of the Program, including, for purposes of clarity any new file 49 | in Source Code form that contains any contents of the Program. Modified 50 | Works shall not include works that contain only declarations, 51 | interfaces, types, classes, structures, or files of the Program solely 52 | in each case in order to link to, bind by name, or subclass the Program 53 | or Modified Works thereof. 54 | 55 | "Distribute" means the acts of a) distributing or b) making available 56 | in any manner that enables the transfer of a copy. 57 | 58 | "Source Code" means the form of a Program preferred for making 59 | modifications, including but not limited to software source code, 60 | documentation source, and configuration files. 61 | 62 | "Secondary License" means either the GNU General Public License, 63 | Version 2.0, or any later versions of that license, including any 64 | exceptions or additional permissions as identified by the initial 65 | Contributor. 66 | 67 | 2. GRANT OF RIGHTS 68 | 69 | a) Subject to the terms of this Agreement, each Contributor hereby 70 | grants Recipient a non-exclusive, worldwide, royalty-free copyright 71 | license to reproduce, prepare Derivative Works of, publicly display, 72 | publicly perform, Distribute and sublicense the Contribution of such 73 | Contributor, if any, and such Derivative Works. 74 | 75 | b) Subject to the terms of this Agreement, each Contributor hereby 76 | grants Recipient a non-exclusive, worldwide, royalty-free patent 77 | license under Licensed Patents to make, use, sell, offer to sell, 78 | import and otherwise transfer the Contribution of such Contributor, 79 | if any, in Source Code or other form. This patent license shall 80 | apply to the combination of the Contribution and the Program if, at 81 | the time the Contribution is added by the Contributor, such addition 82 | of the Contribution causes such combination to be covered by the 83 | Licensed Patents. The patent license shall not apply to any other 84 | combinations which include the Contribution. No hardware per se is 85 | licensed hereunder. 86 | 87 | c) Recipient understands that although each Contributor grants the 88 | licenses to its Contributions set forth herein, no assurances are 89 | provided by any Contributor that the Program does not infringe the 90 | patent or other intellectual property rights of any other entity. 91 | Each Contributor disclaims any liability to Recipient for claims 92 | brought by any other entity based on infringement of intellectual 93 | property rights or otherwise. As a condition to exercising the 94 | rights and licenses granted hereunder, each Recipient hereby 95 | assumes sole responsibility to secure any other intellectual 96 | property rights needed, if any. For example, if a third party 97 | patent license is required to allow Recipient to Distribute the 98 | Program, it is Recipient's responsibility to acquire that license 99 | before distributing the Program. 100 | 101 | d) Each Contributor represents that to its knowledge it has 102 | sufficient copyright rights in its Contribution, if any, to grant 103 | the copyright license set forth in this Agreement. 104 | 105 | e) Notwithstanding the terms of any Secondary License, no 106 | Contributor makes additional grants to any Recipient (other than 107 | those set forth in this Agreement) as a result of such Recipient's 108 | receipt of the Program under the terms of a Secondary License 109 | (if permitted under the terms of Section 3). 110 | 111 | 3. REQUIREMENTS 112 | 113 | 3.1 If a Contributor Distributes the Program in any form, then: 114 | 115 | a) the Program must also be made available as Source Code, in 116 | accordance with section 3.2, and the Contributor must accompany 117 | the Program with a statement that the Source Code for the Program 118 | is available under this Agreement, and informs Recipients how to 119 | obtain it in a reasonable manner on or through a medium customarily 120 | used for software exchange; and 121 | 122 | b) the Contributor may Distribute the Program under a license 123 | different than this Agreement, provided that such license: 124 | i) effectively disclaims on behalf of all other Contributors all 125 | warranties and conditions, express and implied, including 126 | warranties or conditions of title and non-infringement, and 127 | implied warranties or conditions of merchantability and fitness 128 | for a particular purpose; 129 | 130 | ii) effectively excludes on behalf of all other Contributors all 131 | liability for damages, including direct, indirect, special, 132 | incidental and consequential damages, such as lost profits; 133 | 134 | iii) does not attempt to limit or alter the recipients' rights 135 | in the Source Code under section 3.2; and 136 | 137 | iv) requires any subsequent distribution of the Program by any 138 | party to be under a license that satisfies the requirements 139 | of this section 3. 140 | 141 | 3.2 When the Program is Distributed as Source Code: 142 | 143 | a) it must be made available under this Agreement, or if the 144 | Program (i) is combined with other material in a separate file or 145 | files made available under a Secondary License, and (ii) the initial 146 | Contributor attached to the Source Code the notice described in 147 | Exhibit A of this Agreement, then the Program may be made available 148 | under the terms of such Secondary Licenses, and 149 | 150 | b) a copy of this Agreement must be included with each copy of 151 | the Program. 152 | 153 | 3.3 Contributors may not remove or alter any copyright, patent, 154 | trademark, attribution notices, disclaimers of warranty, or limitations 155 | of liability ("notices") contained within the Program from any copy of 156 | the Program which they Distribute, provided that Contributors may add 157 | their own appropriate notices. 158 | 159 | 4. COMMERCIAL DISTRIBUTION 160 | 161 | Commercial distributors of software may accept certain responsibilities 162 | with respect to end users, business partners and the like. While this 163 | license is intended to facilitate the commercial use of the Program, 164 | the Contributor who includes the Program in a commercial product 165 | offering should do so in a manner which does not create potential 166 | liability for other Contributors. Therefore, if a Contributor includes 167 | the Program in a commercial product offering, such Contributor 168 | ("Commercial Contributor") hereby agrees to defend and indemnify every 169 | other Contributor ("Indemnified Contributor") against any losses, 170 | damages and costs (collectively "Losses") arising from claims, lawsuits 171 | and other legal actions brought by a third party against the Indemnified 172 | Contributor to the extent caused by the acts or omissions of such 173 | Commercial Contributor in connection with its distribution of the Program 174 | in a commercial product offering. The obligations in this section do not 175 | apply to any claims or Losses relating to any actual or alleged 176 | intellectual property infringement. In order to qualify, an Indemnified 177 | Contributor must: a) promptly notify the Commercial Contributor in 178 | writing of such claim, and b) allow the Commercial Contributor to control, 179 | and cooperate with the Commercial Contributor in, the defense and any 180 | related settlement negotiations. The Indemnified Contributor may 181 | participate in any such claim at its own expense. 182 | 183 | For example, a Contributor might include the Program in a commercial 184 | product offering, Product X. That Contributor is then a Commercial 185 | Contributor. If that Commercial Contributor then makes performance 186 | claims, or offers warranties related to Product X, those performance 187 | claims and warranties are such Commercial Contributor's responsibility 188 | alone. Under this section, the Commercial Contributor would have to 189 | defend claims against the other Contributors related to those performance 190 | claims and warranties, and if a court requires any other Contributor to 191 | pay any damages as a result, the Commercial Contributor must pay 192 | those damages. 193 | 194 | 5. NO WARRANTY 195 | 196 | EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT 197 | PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" 198 | BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR 199 | IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF 200 | TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR 201 | PURPOSE. Each Recipient is solely responsible for determining the 202 | appropriateness of using and distributing the Program and assumes all 203 | risks associated with its exercise of rights under this Agreement, 204 | including but not limited to the risks and costs of program errors, 205 | compliance with applicable laws, damage to or loss of data, programs 206 | or equipment, and unavailability or interruption of operations. 207 | 208 | 6. DISCLAIMER OF LIABILITY 209 | 210 | EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT 211 | PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS 212 | SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 213 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST 214 | PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 215 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 216 | ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE 217 | EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE 218 | POSSIBILITY OF SUCH DAMAGES. 219 | 220 | 7. GENERAL 221 | 222 | If any provision of this Agreement is invalid or unenforceable under 223 | applicable law, it shall not affect the validity or enforceability of 224 | the remainder of the terms of this Agreement, and without further 225 | action by the parties hereto, such provision shall be reformed to the 226 | minimum extent necessary to make such provision valid and enforceable. 227 | 228 | If Recipient institutes patent litigation against any entity 229 | (including a cross-claim or counterclaim in a lawsuit) alleging that the 230 | Program itself (excluding combinations of the Program with other software 231 | or hardware) infringes such Recipient's patent(s), then such Recipient's 232 | rights granted under Section 2(b) shall terminate as of the date such 233 | litigation is filed. 234 | 235 | All Recipient's rights under this Agreement shall terminate if it 236 | fails to comply with any of the material terms or conditions of this 237 | Agreement and does not cure such failure in a reasonable period of 238 | time after becoming aware of such noncompliance. If all Recipient's 239 | rights under this Agreement terminate, Recipient agrees to cease use 240 | and distribution of the Program as soon as reasonably practicable. 241 | However, Recipient's obligations under this Agreement and any licenses 242 | granted by Recipient relating to the Program shall continue and survive. 243 | 244 | Everyone is permitted to copy and distribute copies of this Agreement, 245 | but in order to avoid inconsistency the Agreement is copyrighted and 246 | may only be modified in the following manner. The Agreement Steward 247 | reserves the right to publish new versions (including revisions) of 248 | this Agreement from time to time. No one other than the Agreement 249 | Steward has the right to modify this Agreement. The Eclipse Foundation 250 | is the initial Agreement Steward. The Eclipse Foundation may assign the 251 | responsibility to serve as the Agreement Steward to a suitable separate 252 | entity. Each new version of the Agreement will be given a distinguishing 253 | version number. The Program (including Contributions) may always be 254 | Distributed subject to the version of the Agreement under which it was 255 | received. In addition, after a new version of the Agreement is published, 256 | Contributor may elect to Distribute the Program (including its 257 | Contributions) under the new version. 258 | 259 | Except as expressly stated in Sections 2(a) and 2(b) above, Recipient 260 | receives no rights or licenses to the intellectual property of any 261 | Contributor under this Agreement, whether expressly, by implication, 262 | estoppel or otherwise. All rights in the Program not expressly granted 263 | under this Agreement are reserved. Nothing in this Agreement is intended 264 | to be enforceable by any entity that is not a Contributor or Recipient. 265 | No third-party beneficiary rights are created under this Agreement. 266 | 267 | Exhibit A - Form of Secondary Licenses Notice 268 | 269 | "This Source Code may also be made available under the following 270 | Secondary Licenses when the conditions for such availability set forth 271 | in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), 272 | version(s), and exceptions or additional permissions here}." 273 | 274 | Simply including a copy of this Agreement, including this Exhibit A 275 | is not sufficient to license the Source Code under Secondary Licenses. 276 | 277 | If it is not possible or desirable to put the notice in a particular 278 | file, then You may include the notice in a location (such as a LICENSE 279 | file in a relevant directory) where a recipient would be likely to 280 | look for such a notice. 281 | 282 | You may add additional accurate notices of copyright ownership. 283 | 284 | --- 285 | 286 | ## The GNU General Public License (GPL) Version 2, June 1991 287 | 288 | Copyright (C) 1989, 1991 Free Software Foundation, Inc. 289 | 51 Franklin Street, Fifth Floor 290 | Boston, MA 02110-1335 291 | USA 292 | 293 | Everyone is permitted to copy and distribute verbatim copies 294 | of this license document, but changing it is not allowed. 295 | 296 | Preamble 297 | 298 | The licenses for most software are designed to take away your freedom to 299 | share and change it. By contrast, the GNU General Public License is 300 | intended to guarantee your freedom to share and change free software--to 301 | make sure the software is free for all its users. This General Public 302 | License applies to most of the Free Software Foundation's software and 303 | to any other program whose authors commit to using it. (Some other Free 304 | Software Foundation software is covered by the GNU Library General 305 | Public License instead.) You can apply it to your programs, too. 306 | 307 | When we speak of free software, we are referring to freedom, not price. 308 | Our General Public Licenses are designed to make sure that you have the 309 | freedom to distribute copies of free software (and charge for this 310 | service if you wish), that you receive source code or can get it if you 311 | want it, that you can change the software or use pieces of it in new 312 | free programs; and that you know you can do these things. 313 | 314 | To protect your rights, we need to make restrictions that forbid anyone 315 | to deny you these rights or to ask you to surrender the rights. These 316 | restrictions translate to certain responsibilities for you if you 317 | distribute copies of the software, or if you modify it. 318 | 319 | For example, if you distribute copies of such a program, whether gratis 320 | or for a fee, you must give the recipients all the rights that you have. 321 | You must make sure that they, too, receive or can get the source code. 322 | And you must show them these terms so they know their rights. 323 | 324 | We protect your rights with two steps: (1) copyright the software, and 325 | (2) offer you this license which gives you legal permission to copy, 326 | distribute and/or modify the software. 327 | 328 | Also, for each author's protection and ours, we want to make certain 329 | that everyone understands that there is no warranty for this free 330 | software. If the software is modified by someone else and passed on, we 331 | want its recipients to know that what they have is not the original, so 332 | that any problems introduced by others will not reflect on the original 333 | authors' reputations. 334 | 335 | Finally, any free program is threatened constantly by software patents. 336 | We wish to avoid the danger that redistributors of a free program will 337 | individually obtain patent licenses, in effect making the program 338 | proprietary. To prevent this, we have made it clear that any patent must 339 | be licensed for everyone's free use or not licensed at all. 340 | 341 | The precise terms and conditions for copying, distribution and 342 | modification follow. 343 | 344 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 345 | 346 | 0. This License applies to any program or other work which contains a 347 | notice placed by the copyright holder saying it may be distributed under 348 | the terms of this General Public License. The "Program", below, refers 349 | to any such program or work, and a "work based on the Program" means 350 | either the Program or any derivative work under copyright law: that is 351 | to say, a work containing the Program or a portion of it, either 352 | verbatim or with modifications and/or translated into another language. 353 | (Hereinafter, translation is included without limitation in the term 354 | "modification".) Each licensee is addressed as "you". 355 | 356 | Activities other than copying, distribution and modification are not 357 | covered by this License; they are outside its scope. The act of running 358 | the Program is not restricted, and the output from the Program is 359 | covered only if its contents constitute a work based on the Program 360 | (independent of having been made by running the Program). Whether that 361 | is true depends on what the Program does. 362 | 363 | 1. You may copy and distribute verbatim copies of the Program's source 364 | code as you receive it, in any medium, provided that you conspicuously 365 | and appropriately publish on each copy an appropriate copyright notice 366 | and disclaimer of warranty; keep intact all the notices that refer to 367 | this License and to the absence of any warranty; and give any other 368 | recipients of the Program a copy of this License along with the Program. 369 | 370 | You may charge a fee for the physical act of transferring a copy, and 371 | you may at your option offer warranty protection in exchange for a fee. 372 | 373 | 2. You may modify your copy or copies of the Program or any portion of 374 | it, thus forming a work based on the Program, and copy and distribute 375 | such modifications or work under the terms of Section 1 above, provided 376 | that you also meet all of these conditions: 377 | 378 | a) You must cause the modified files to carry prominent notices 379 | stating that you changed the files and the date of any change. 380 | 381 | b) You must cause any work that you distribute or publish, that in 382 | whole or in part contains or is derived from the Program or any part 383 | thereof, to be licensed as a whole at no charge to all third parties 384 | under the terms of this License. 385 | 386 | c) If the modified program normally reads commands interactively 387 | when run, you must cause it, when started running for such 388 | interactive use in the most ordinary way, to print or display an 389 | announcement including an appropriate copyright notice and a notice 390 | that there is no warranty (or else, saying that you provide a 391 | warranty) and that users may redistribute the program under these 392 | conditions, and telling the user how to view a copy of this License. 393 | (Exception: if the Program itself is interactive but does not 394 | normally print such an announcement, your work based on the Program 395 | is not required to print an announcement.) 396 | 397 | These requirements apply to the modified work as a whole. If 398 | identifiable sections of that work are not derived from the Program, and 399 | can be reasonably considered independent and separate works in 400 | themselves, then this License, and its terms, do not apply to those 401 | sections when you distribute them as separate works. But when you 402 | distribute the same sections as part of a whole which is a work based on 403 | the Program, the distribution of the whole must be on the terms of this 404 | License, whose permissions for other licensees extend to the entire 405 | whole, and thus to each and every part regardless of who wrote it. 406 | 407 | Thus, it is not the intent of this section to claim rights or contest 408 | your rights to work written entirely by you; rather, the intent is to 409 | exercise the right to control the distribution of derivative or 410 | collective works based on the Program. 411 | 412 | In addition, mere aggregation of another work not based on the Program 413 | with the Program (or with a work based on the Program) on a volume of a 414 | storage or distribution medium does not bring the other work under the 415 | scope of this License. 416 | 417 | 3. You may copy and distribute the Program (or a work based on it, 418 | under Section 2) in object code or executable form under the terms of 419 | Sections 1 and 2 above provided that you also do one of the following: 420 | 421 | a) Accompany it with the complete corresponding machine-readable 422 | source code, which must be distributed under the terms of Sections 1 423 | and 2 above on a medium customarily used for software interchange; or, 424 | 425 | b) Accompany it with a written offer, valid for at least three 426 | years, to give any third party, for a charge no more than your cost 427 | of physically performing source distribution, a complete 428 | machine-readable copy of the corresponding source code, to be 429 | distributed under the terms of Sections 1 and 2 above on a medium 430 | customarily used for software interchange; or, 431 | 432 | c) Accompany it with the information you received as to the offer to 433 | distribute corresponding source code. (This alternative is allowed 434 | only for noncommercial distribution and only if you received the 435 | program in object code or executable form with such an offer, in 436 | accord with Subsection b above.) 437 | 438 | The source code for a work means the preferred form of the work for 439 | making modifications to it. For an executable work, complete source code 440 | means all the source code for all modules it contains, plus any 441 | associated interface definition files, plus the scripts used to control 442 | compilation and installation of the executable. However, as a special 443 | exception, the source code distributed need not include anything that is 444 | normally distributed (in either source or binary form) with the major 445 | components (compiler, kernel, and so on) of the operating system on 446 | which the executable runs, unless that component itself accompanies the 447 | executable. 448 | 449 | If distribution of executable or object code is made by offering access 450 | to copy from a designated place, then offering equivalent access to copy 451 | the source code from the same place counts as distribution of the source 452 | code, even though third parties are not compelled to copy the source 453 | along with the object code. 454 | 455 | 4. You may not copy, modify, sublicense, or distribute the Program 456 | except as expressly provided under this License. Any attempt otherwise 457 | to copy, modify, sublicense or distribute the Program is void, and will 458 | automatically terminate your rights under this License. However, parties 459 | who have received copies, or rights, from you under this License will 460 | not have their licenses terminated so long as such parties remain in 461 | full compliance. 462 | 463 | 5. You are not required to accept this License, since you have not 464 | signed it. However, nothing else grants you permission to modify or 465 | distribute the Program or its derivative works. These actions are 466 | prohibited by law if you do not accept this License. Therefore, by 467 | modifying or distributing the Program (or any work based on the 468 | Program), you indicate your acceptance of this License to do so, and all 469 | its terms and conditions for copying, distributing or modifying the 470 | Program or works based on it. 471 | 472 | 6. Each time you redistribute the Program (or any work based on the 473 | Program), the recipient automatically receives a license from the 474 | original licensor to copy, distribute or modify the Program subject to 475 | these terms and conditions. You may not impose any further restrictions 476 | on the recipients' exercise of the rights granted herein. You are not 477 | responsible for enforcing compliance by third parties to this License. 478 | 479 | 7. If, as a consequence of a court judgment or allegation of patent 480 | infringement or for any other reason (not limited to patent issues), 481 | conditions are imposed on you (whether by court order, agreement or 482 | otherwise) that contradict the conditions of this License, they do not 483 | excuse you from the conditions of this License. If you cannot distribute 484 | so as to satisfy simultaneously your obligations under this License and 485 | any other pertinent obligations, then as a consequence you may not 486 | distribute the Program at all. For example, if a patent license would 487 | not permit royalty-free redistribution of the Program by all those who 488 | receive copies directly or indirectly through you, then the only way you 489 | could satisfy both it and this License would be to refrain entirely from 490 | distribution of the Program. 491 | 492 | If any portion of this section is held invalid or unenforceable under 493 | any particular circumstance, the balance of the section is intended to 494 | apply and the section as a whole is intended to apply in other 495 | circumstances. 496 | 497 | It is not the purpose of this section to induce you to infringe any 498 | patents or other property right claims or to contest validity of any 499 | such claims; this section has the sole purpose of protecting the 500 | integrity of the free software distribution system, which is implemented 501 | by public license practices. Many people have made generous 502 | contributions to the wide range of software distributed through that 503 | system in reliance on consistent application of that system; it is up to 504 | the author/donor to decide if he or she is willing to distribute 505 | software through any other system and a licensee cannot impose that choice. 506 | 507 | This section is intended to make thoroughly clear what is believed to be 508 | a consequence of the rest of this License. 509 | 510 | 8. If the distribution and/or use of the Program is restricted in 511 | certain countries either by patents or by copyrighted interfaces, the 512 | original copyright holder who places the Program under this License may 513 | add an explicit geographical distribution limitation excluding those 514 | countries, so that distribution is permitted only in or among countries 515 | not thus excluded. In such case, this License incorporates the 516 | limitation as if written in the body of this License. 517 | 518 | 9. The Free Software Foundation may publish revised and/or new 519 | versions of the General Public License from time to time. Such new 520 | versions will be similar in spirit to the present version, but may 521 | differ in detail to address new problems or concerns. 522 | 523 | Each version is given a distinguishing version number. If the Program 524 | specifies a version number of this License which applies to it and "any 525 | later version", you have the option of following the terms and 526 | conditions either of that version or of any later version published by 527 | the Free Software Foundation. If the Program does not specify a version 528 | number of this License, you may choose any version ever published by the 529 | Free Software Foundation. 530 | 531 | 10. If you wish to incorporate parts of the Program into other free 532 | programs whose distribution conditions are different, write to the 533 | author to ask for permission. For software which is copyrighted by the 534 | Free Software Foundation, write to the Free Software Foundation; we 535 | sometimes make exceptions for this. Our decision will be guided by the 536 | two goals of preserving the free status of all derivatives of our free 537 | software and of promoting the sharing and reuse of software generally. 538 | 539 | NO WARRANTY 540 | 541 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO 542 | WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. 543 | EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR 544 | OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, 545 | EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 546 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE 547 | ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH 548 | YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL 549 | NECESSARY SERVICING, REPAIR OR CORRECTION. 550 | 551 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN 552 | WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY 553 | AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR 554 | DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL 555 | DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM 556 | (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED 557 | INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF 558 | THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR 559 | OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 560 | 561 | END OF TERMS AND CONDITIONS 562 | 563 | How to Apply These Terms to Your New Programs 564 | 565 | If you develop a new program, and you want it to be of the greatest 566 | possible use to the public, the best way to achieve this is to make it 567 | free software which everyone can redistribute and change under these terms. 568 | 569 | To do so, attach the following notices to the program. It is safest to 570 | attach them to the start of each source file to most effectively convey 571 | the exclusion of warranty; and each file should have at least the 572 | "copyright" line and a pointer to where the full notice is found. 573 | 574 | One line to give the program's name and a brief idea of what it does. 575 | Copyright (C) 576 | 577 | This program is free software; you can redistribute it and/or modify 578 | it under the terms of the GNU General Public License as published by 579 | the Free Software Foundation; either version 2 of the License, or 580 | (at your option) any later version. 581 | 582 | This program is distributed in the hope that it will be useful, but 583 | WITHOUT ANY WARRANTY; without even the implied warranty of 584 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 585 | General Public License for more details. 586 | 587 | You should have received a copy of the GNU General Public License 588 | along with this program; if not, write to the Free Software 589 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA 590 | 591 | Also add information on how to contact you by electronic and paper mail. 592 | 593 | If the program is interactive, make it output a short notice like this 594 | when it starts in an interactive mode: 595 | 596 | Gnomovision version 69, Copyright (C) year name of author 597 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type 598 | `show w'. This is free software, and you are welcome to redistribute 599 | it under certain conditions; type `show c' for details. 600 | 601 | The hypothetical commands `show w' and `show c' should show the 602 | appropriate parts of the General Public License. Of course, the commands 603 | you use may be called something other than `show w' and `show c'; they 604 | could even be mouse-clicks or menu items--whatever suits your program. 605 | 606 | You should also get your employer (if you work as a programmer) or your 607 | school, if any, to sign a "copyright disclaimer" for the program, if 608 | necessary. Here is a sample; alter the names: 609 | 610 | Yoyodyne, Inc., hereby disclaims all copyright interest in the 611 | program `Gnomovision' (which makes passes at compilers) written by 612 | James Hacker. 613 | 614 | signature of Ty Coon, 1 April 1989 615 | Ty Coon, President of Vice 616 | 617 | This General Public License does not permit incorporating your program 618 | into proprietary programs. If your program is a subroutine library, you 619 | may consider it more useful to permit linking proprietary applications 620 | with the library. If this is what you want to do, use the GNU Library 621 | General Public License instead of this License. 622 | 623 | --- 624 | 625 | ## CLASSPATH EXCEPTION 626 | 627 | Linking this library statically or dynamically with other modules is 628 | making a combined work based on this library. Thus, the terms and 629 | conditions of the GNU General Public License version 2 cover the whole 630 | combination. 631 | 632 | As a special exception, the copyright holders of this library give you 633 | permission to link this library with independent modules to produce an 634 | executable, regardless of the license terms of these independent 635 | modules, and to copy and distribute the resulting executable under 636 | terms of your choice, provided that you also meet, for each linked 637 | independent module, the terms and conditions of the license of that 638 | module. An independent module is a module which is not derived from or 639 | based on this library. If you modify this library, you may extend this 640 | exception to your version of the library, but you are not obligated to 641 | do so. If you do not wish to do so, delete this exception statement 642 | from your version. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Built-in vscode extensions 2 | 3 | This extension contains code to build, package and publish the extensions that are included with VS Code. 4 | 5 | We build/package them ourselves, from the MIT-licensed vscode repository, and then publish them individually to Open VSX. We do not modify the extensions, other than a couple of very minor adaptations, to make them suitable to work as standalone extensions. 6 | 7 | The "vscode builtins", "vscode built-ins" or "vscode built-in extensions" are a set of extensions whose code resides in the public vscode repository. They are built along and bundled as a group, in the Visual Studio Code product as well as in products based on Code OSS and derivatives such as VSCodium. As such, they are not made available as individual .vsix packages, for use in other IDE applications, outside of the vscode family. This is why we have this repo here - to build, package and individually publish, the various built-in extensions. 8 | 9 | Every sub-folder of vscode/extensions/ is one built-in vscode extension (with a couple of exceptions like node_modules after a build) 10 | 11 | ## Getting started 12 | 13 | Building the built-in `*.vsix` files locally is described in [Building.md](./doc/Building.md). If you need to publish a new version of the built-ins for use with Theia, please follow the process described in [Publishing.md](./doc/Publishing.md). 14 | 15 | ## License 16 | 17 | - [Eclipse Public License 2.0](LICENSE) 18 | - [一 (Secondary) GNU General Public License, version 2 with the GNU Classpath Exception](LICENSE) 19 | 20 | ## Trademark 21 | 22 | "Theia" is a trademark of the Eclipse Foundation 23 | 24 | -------------------------------------------------------------------------------- /doc/Building.md: -------------------------------------------------------------------------------- 1 | # Building VS Code built-in Extensions 2 | 3 | ## Setup 4 | 5 | 1. Install the VS Code prerequisites as described in (link) 6 | 2. Open a command line inside this repo 7 | 3. Set up the version of VS Code you want to build: 8 | git submodule init 9 | git submodule update 10 | 4. Check out the version of VS code you want to use 11 | cd vscode 12 | git checkout 13 | 5. Install project dependencies 14 | npm install 15 | 6. Get back to the repository root folder 16 | cd .. 17 | 18 | ## Building 19 | 20 | Building the exensions from VS Code is done simply from this repository root folder with 21 | 22 | yarn build:extensions 23 | 24 | This will compile a production ("minified") version of the built-in extensions into the `vscode/.build` folder. In order to produce unminified versions for debugging, 25 | you will need to edit the build script at `vscode/build/lib/extensions.js`. Find the line that creates the webpack config. It should look like this: 26 | 27 | ```javascript 28 | const webpackConfig = { 29 | ...config, 30 | ...{ mode: 'production' } 31 | }; 32 | ``` 33 | 34 | Remove part saying `mode: production` and redo the build 35 | 36 | ## Packaging 37 | 38 | ### Packaging the built-in vscode extensions 39 | 40 | Once we have built our extensions, we can packge them into `*.vsix`-files using this package script: 41 | 42 | yarn package-vsix:latest 43 | 44 | The script will produce `*.vsix` files in a folder called `./dist`. The vsix files will be named like `-.vsix`. Note that the publisher (msvscode) 45 | is not included. 46 | 47 | If you want to create a prerelease version, you can do so by invoking 48 | 49 | yarn package-vsix:next 50 | 51 | This will generate `*.vsix` files of the form `--next..vsix` 52 | 53 | **Implementation Note:** the VS Code build process puts some shared dependencies in a `node_modules` folder which is located in the "extensions" folder at run time. In order to produce self-contained extensions, we need to include those modules (at the time, it's the typescript language server) into the packaged extensions (currently for `typescript-language-features` and `html-language-features`). The code doing this is located in `src/package-vsix.js`. We also need to patch the `typescript-language-features` extension because it contains a hard-code reference to `../node_modules`. 54 | 55 | ### Creating the built-ins extension-pack 56 | 57 | We also create an extension pack from the internal and external built-ins into the `dist` folder with a package script. The file name will be of the form: 58 | builtin-extension-pack-.vsix. 59 | 60 | yarn create-extension-pack:latest 61 | 62 | Again, we can produce a preview release of the form `builtin-extension-pack--next-.vsix 63 | 64 | yarn create-extension-pack:next 65 | 66 | Note that you will have to package the `next` versions of the built-in extensions before they can be included in a `next` extensions pack. 67 | -------------------------------------------------------------------------------- /doc/Publishing.md: -------------------------------------------------------------------------------- 1 | # Publishing VS Code built-in Extensions for a given VS Code Version 2 | 3 | Publishing the VS Code built-in extensions for a given relase of VS Code entails multiple steps (in order) 4 | 5 | 1. Perform IP-checks with the Eclipse foundation for the extensions included in the VS Code repo ("builtin") 6 | 2. Perform IP-checks with the Eclipse foundation for each extension that is included with VS Code, but with source in a different location ("external") 7 | 3. Build and test & package the built-ins with the latest Theia version 8 | 4. Publish the extensions from the VS Code repo to open-vsx.org 9 | 10 | ## IP checks for VS Code built-ins 11 | 12 | To prepare for the IP checks, you'll have to perform the setup steps from [Building.md](./Building.md#setup). Now we need 13 | to first run the [dash-licenses](https://github.com/eclipse/dash-licenses) tool to check the dependencies of the built-in 14 | extensions for compatibility with the Theia license. There are a couple of package scripts helping with this: the following sequence downloads the dash-licenses jar to the current directory and then runs the `dash-licenses` for all relevant extensions in the `vscode/extensions` directory. 15 | 16 | yarn download:dash-licenses 17 | yarn ip-check:builtin 18 | 19 | This will run the dash-licenses tool an all extensions in the VS Code repo. To automatically open issues with the Eclipse [IP-issue tracker](https://gitlab.eclipse.org/eclipsefdn/emo-team/iplab), you can pass a `--token` parameter to the `ip-check:builtin` script. The token is described [here](https://github.com/eclipse/dash-licenses?tab=readme-ov-file#automatic-ip-team-review-requests). 20 | 21 | yarn ip-check:builtin --token 22 | 23 | Any issues will show up as opened by you (or the account owning the token) at . In general, it's a good idea to wait for the 24 | IP tickets to be closed before publishing the built-in. Technically, this restriction applies to publishing the built-ins as part of an Eclipse project artifact like Theia IDE. 25 | Now it's time to open an ip-ticket for the source of the VS Code built-ins themselves. 26 | 27 | Generate a source zip of the extensions folder. You can use a package script that will prune test extensions and test folders from the source: 28 | 29 | yarn archive:builtin 30 | 31 | This will `git clean` all extension directories and generate a zip file named like so: `vscode-builtins-.src.zip` 32 | 33 | Open an issue that looks like this: . Use the template "vet third party" on the new issue and fill in the templata liek in the example issue. Attach the source file generated in step one as "source". Since there is no real "clearlydefined id" for the built-ins, we set the title of the issue to "project/ecd.theia/-/vscode-builtin-extensions/" 34 | 35 | ## IP checks for external VS Code built-ins 36 | 37 | We now have to perform the IP checks for the "external builtins". These are extensions which are not developed as part of the VS code repository, but which are still included as part of the 38 | VS Code product. They are described in the `product.json` file which lives at the root of the VS Code repository. There is a package script which will clone the relevant repos and check out 39 | the correct tag into a folder named `external-builtins`. 40 | 41 | yarn get-external-builtins 42 | 43 | We now have to run the checks for the dependencies of those extensions: 44 | 45 | yarn ip-check:external --token 46 | 47 | Again, this will open issues with the Eclipse IP issue tracker. Once this is done, it's time to open an ip-check issue for the content of each of the external built ins. 48 | For extensions from github, it's usually enough to open a "vet third party" issue with just the project in the details, like this one: . The title should be the clearlydefined id of the form `git/github///v`. The IP-check bot is usually able to download the source from the github release page on its own. In the issue template, just fill in the "project" field. 49 | If the IP-check bot cannot figure out the source (it will ask for source in a comment on the issue), you can zip up the source of all external built-ins into files of the form `.-.src.zip>` with a package script: 50 | 51 | yarn archive:external 52 | 53 | You can then drag the relevant zip into the gitlab issue. 54 | 55 | ## Produce the VS Code built-ins 56 | 57 | Building and packaging the built-ins is described in [Building.md](./Building.md). 58 | 59 | ## Testing 60 | 61 | This section assumes you have a local clone of the [main Theia repo](https://github.com/eclipse-theia/theia). Please refer to the Theia documentation for instructions on how to build and 62 | run Theia. Some built-ins may refuse to run if the VS Code API version reported by Theia is lower that what they require. If Theia's default API verison has not been updated yet, you can 63 | force a newer version by either setting the `VSCODE_API_VERSION` environment variable or by passing the option `--vscode-api-version ..` 64 | 65 | If already present, delete folder `plugins` in your local Theia repo folder. We will instead use the built-ins we previously built 66 | 67 | ```bash 68 | rm -rf plugins 69 | mkdir plugins 70 | ``` 71 | 72 | Copy the builtin extension `*.vsix` files built above to Theia's `extensions` folder (typically `~/.theia/extensions`) 73 | 74 | ```bash 75 | cp -a dist/* ~/.theia/extensions # adjust according to where your .theia folder resides 76 | ``` 77 | 78 | Get rid of a few builtins that will interfere with testing (note: we keep these extensions where they were generated, but remove them from our test Theia application): 79 | 80 | ```bash 81 | cd theia # back to theia repo 82 | rm -rf plugins/ipynb-* 83 | rm -rf plugins/extension-editing-* 84 | ``` 85 | 86 | To test vscode builtin git, we need to remove the Theia-specific git extension from the example application, for this, remove the line referring to 87 | `"@theia/git": ""` from the `package.json` of the Theia example you use for testing. 88 | 89 | Rebuild the example and start Theia: 90 | 91 | ```bash 92 | yarn && yarn browser build 93 | yarn browser start 94 | ``` 95 | 96 | Note that startup will take a bit longer than usual while Theia unzips the *.vsix files to `~/.theia/deployedPlugins`. 97 | 98 | - [ ] Connect to `localhost:3000` with a browser 99 | - [ ] Observe backend log for new exceptions, specially during activation of builtin extensions 100 | - [ ] quick TypeScript test 101 | - [ ] quick JSON test 102 | - [ ] quick git test 103 | - [ ] Submit PR for current builtins versions for review and merge. 104 | 105 | File issues for problems found. Some problems may require changing how we build or package, in which case a fix would be made on `vscode-builtin-extensions` as part of the ongoing release PR. If the issue is with the upstream Theia repo, we open the issue there. 106 | 107 | While testing buitins 1.72.2, we found the following, for example: 108 | 109 | - [RangeError: Maximum call stack size exceeded with recent vscode.html builtin extension #12434](https://github.com/eclipse-theia/theia/issues/12434) 110 | - [[builtins] [proposed API] [vscode.markdown-language-features]: Theia misses proposed API: `Document Paste`](https://github.com/eclipse-theia/theia/issues/12430) 111 | - [[builtins] [proposed API] [vscode.git@1.72.2]: Theia misses proposed API: `Edit session identifier provider`](https://github.com/eclipse-theia/theia/issues/12437) 112 | 113 | Once you are confident that the new set of builtins do not have obvious issues, you can proceed with publishing them to `open-vsx.org`. It's ok if there are issues that will later be fixed in Theia - older version of the builtin can be temporarily used instead in most cases. 114 | 115 | Now it's time to open a PR against master. The convention is to create a branch that is named after the version of VS Code wer're using: 116 | 117 | git checkout -b .. # replace the version here wiht the VS Code version, for example "1.88.1" 118 | 119 | Now commit all changes you had to make to get the built-ins to correctly build, **including the `vscode` folder**. Adding `vscode` will update the submodule configuration n this repo to 120 | check out the correct version of VS Code upon `git submodule update`. The convention is to make a single commit named `changes for builtins v..`. Open a PR and have it reviewed as usual. 121 | 122 | ## Publishing to openvsx.org 123 | 124 | **Before publishing to open-vsx, all issues opened in [internal](#ip-checks-for-vs-code-built-ins) and [external](#ip-checks-for-external-vs-code-built-ins) should be closed.** 125 | Please work with the Eclipse Foundation staff and the Theia community if there are problems! 126 | 127 | Publishing is done using GitHub Actions. In the vscode-builtin-extensions repo, a publish token for open-vsx.org has been set, that can be used to publish under the identity of the openvsx publish bot. 128 | 129 | There are four workflows in this repo. 130 | 131 | - **publish-vsx-latest.yml:** Will check out the latest tagged version of VS Code and builds and packages a release version of the extensions and extension pack 132 | - **publish-vsix-next.yml:** Will check out the VS Code `main branch` and build a prerelase version. 133 | 134 | both these workflows are triggered on a regular schedule and upon push to the master branch 135 | 136 | - **publish-vsx-specific-latest:** This action is triggered upon pushes to the branch `ovsx-publish`. It checks out the version of VS Code that is checked in as a submodule 137 | on the branch and creates and packages a release version of the built-ins. It then publishes the built-ins and extension pack to the open-vsx registry. 138 | - **publish-vsx-specific-next:** This action is triggered upon pushes to the branch `ovsx-publish-next`. It checks out the version of VS Code that is checked in as a submodule 139 | on the branch and creates and packages a prerelease version of the built-ins. It then publishes the built-ins and extension pack to the open-vsx registry. 140 | 141 | For "regular" vs. "prerelease" vesions see [Building.md](./Building.md)) 142 | 143 | In order to publish updated built-ins, we replace the contents of the `osvx-publish` branch. First, we make sure we're on the branch we're created in the "Testing" section: 144 | 145 | git checkout 1.72.2 146 | git branch -D ovsx-publish # delete the local version of the publsh branch 147 | git checkout -b osvx-publish # copy our current branch to `osvx-publish` 148 | git push origin # if the push fails because the branch can't be fast-forwarded, add the `-f` flag 149 | 150 | Go in the [Actions](https://github.com/eclipse-theia/vscode-builtin-extensions/actions) tab to observe the publishing progress. 151 | 152 | The publish workflow may fail, usually because the prerequisites for building the built-ins have changed. In this case, make the necessary change in the relevant workflows. In general, the setup should be aligned with the CI setup of VS Code: 153 | . **Make sure you updated all the workflows that may be affected.** 154 | Now push to `osvx-publish` again. Repeat until the publish succeeds. 155 | 156 | Now we make a copy of the publish branch "for the record": 157 | 158 | git checkout -b old-ovsx-publish-.. 159 | git push origin 160 | 161 | At this point, make sure the also apply all changes you had to make to get the publish to succeed in the `master` branch as well. 162 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vscode-builtin-extensions", 3 | "private": true, 4 | "license": "EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0", 5 | "scripts": { 6 | "build:extensions": "npm --prefix vscode install && yarn compile:extensions && yarn bundle:extensions", 7 | "compile:extensions": "cross-env NODE_OPTIONS=--max-old-space-size=8192 node ./src/compile.js", 8 | "bundle:extensions": "cross-env NODE_OPTIONS=--max-old-space-size=8192 node ./src/bundle.js", 9 | "publish:vsix": "node ./src/publish-vsix.js", 10 | "package-vsix:latest": "node src/package-vsix.js --tag latest", 11 | "package-vsix:next": "node src/package-vsix.js --tag next", 12 | "create-extension-pack:latest": "node src/create-extension-pack.js --tag latest", 13 | "create-extension-pack:next": "node src/create-extension-pack.js --tag next", 14 | "checkout-latest-vscode-release": "node src/checkout-latest-vscode.js", 15 | "get-external-builtins": "node src/get-external-builtins.js", 16 | "clean": "git clean -ffdx; cd vscode && git clean -ffdx", 17 | "download:dash-licenses": "node ./src/download.js --url=\"https://repo.eclipse.org/service/local/artifact/maven/redirect?r=dash-licenses&g=org.eclipse.dash&a=org.eclipse.dash.licenses&v=LATEST\" --out=dash-licenses.jar", 18 | "ip-check:builtin": "node ./src/check-dependencies.js --dir vscode/extensions", 19 | "ip-check:external": "node ./src/check-dependencies.js --dir external-builtins", 20 | "archive:builtin": "node ./src/archive-source.js --mode builtin", 21 | "archive:external": "node ./src/archive-source.js --mode external" 22 | }, 23 | "devDependencies": { 24 | "@types/archiver": "^3.0.0", 25 | "@types/fs-extra": "^9.0.0", 26 | "@types/node": "14", 27 | "@types/node-fetch": "^2.6.0", 28 | "archiver": "^3.0.3", 29 | "capitalize": "^2.0.2", 30 | "colors": "^1.4.0", 31 | "cross-env": "^7.0.3", 32 | "execa": "^8.0.1", 33 | "fs-extra": "^10.0.0", 34 | "glob": "^7.2.3", 35 | "node-fetch": "^2.6.0", 36 | "ovsx": "^0.8.1", 37 | "p-queue": "^2.4.2", 38 | "@vscode/ripgrep": "1.15.9", 39 | "yargs": "^17.0.0" 40 | }, 41 | "workspaces": [ 42 | "vscode-builtin-extensions" 43 | ] 44 | } -------------------------------------------------------------------------------- /src/archive-source.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************** 2 | * Copyright (C) 2024 ST Microelectronics and others. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v. 2.0 which is available at 6 | * http://www.eclipse.org/legal/epl-2.0. 7 | * 8 | * This Source Code may also be made available under the following Secondary 9 | * Licenses when the conditions for such availability set forth in the Eclipse 10 | * Public License v. 2.0 are satisfied: GNU General Public License, version 2 11 | * with the GNU Classpath Exception which is available at 12 | * https://www.gnu.org/software/classpath/license.html. 13 | * 14 | * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 15 | ********************************************************************************/ 16 | 17 | const archiver = require('archiver'); 18 | const glob = require('glob'); 19 | const util = require('util'); 20 | const globPromise = util.promisify(glob); 21 | const { root, vscodeExtensions, vscode, externalBuiltinsRepos } = require('./paths'); 22 | const fs = require('fs'); 23 | const path = require('path'); 24 | const { computeVersion } = require('./version'); 25 | 26 | const yargs = require('yargs'); 27 | 28 | const { mode } = yargs.option('mode', { 29 | type: 'string', 30 | demandOption: true, 31 | choices: ['builtin', 'external'] 32 | }).argv; 33 | 34 | /** 35 | * 36 | * @param { archiver.Archiver } zip 37 | * @param { string } extensionDir 38 | */ 39 | async function addExtensionToArchive(archive, extensionDir) { 40 | console.log(`adding extension ${extensionDir}`); 41 | const filesToInclude = await globPromise('**', { 42 | cwd: extensionDir, 43 | ignore: ['**/test/**/*', '**/test-workspace/**/*'], 44 | dot: true, 45 | nodir: true 46 | }); 47 | for (const file of filesToInclude) { 48 | const filePath = path.resolve(extensionDir, file); 49 | archive.file(filePath, { 50 | name: path.join(path.basename(extensionDir), file), 51 | mode: (await fs.promises.stat(filePath)).mode 52 | }); 53 | } 54 | } 55 | 56 | async function archiveExternal() { 57 | const prod = vscode('product.json'); 58 | const content = fs.readFileSync(prod, 'utf-8'); 59 | /** 60 | * vscode product.json section where we find info about external builtins 61 | * @type ProductBuiltInExtensionEntry[] 62 | */ 63 | const prodJsonExts = JSON.parse(content).builtInExtensions || []; 64 | const entries= new Map(); 65 | 66 | for (ext of prodJsonExts) { 67 | const names = ext.repo.split("/"); 68 | entries.set(names[names.length - 1], ext); 69 | } 70 | 71 | const { execa } = await import('execa'); 72 | 73 | const rootDir = externalBuiltinsRepos(); 74 | const dirs = await fs.promises.readdir(rootDir, { withFileTypes: true }); 75 | for (const dir of dirs) { 76 | if (dir.isDirectory()) { 77 | const resolvedDir = path.resolve(rootDir, dir.name); 78 | const entry = entries.get(dir.name); 79 | process.stdout.write(`cleaning directory: ${resolvedDir}...`); 80 | await execa('git', ['clean', '-xfd'], { 81 | cwd: resolvedDir, 82 | stdout: 'inherit' 83 | }); 84 | process.stdout.write('done\n'); 85 | 86 | const zipFile = path.resolve(root(), `${entry.name}-${entry.version}.src.zip`); 87 | 88 | const archive = archiver('zip'); 89 | const output = fs.createWriteStream(zipFile, { flags: "w" }); 90 | archive.pipe(output); 91 | await addExtensionToArchive(archive, path.resolve(rootDir, dir.name)); 92 | await archive.finalize(); 93 | } 94 | } 95 | } 96 | 97 | async function archiveBuiltins() { 98 | const { execa } = await import('execa'); 99 | 100 | process.stdout.write('cleaning vscode directory'); 101 | execa('git', ['clean', '-xfd'], { 102 | cwd: vscode() 103 | }); 104 | 105 | process.stdout.write('done\n'); 106 | 107 | const excludedDirs = ['vscode-colorize-tests', 'vscode-api-tests', 'microsoft-authentication'] 108 | const version = await computeVersion('latest'); 109 | const zipFile = root(`vscode-built-ins-${version}.src.zip`); 110 | 111 | const archive = archiver('zip'); 112 | const output = fs.createWriteStream(zipFile, { flags: "w" }); 113 | archive.pipe(output); 114 | 115 | const dirs = await fs.promises.readdir(vscodeExtensions(), { withFileTypes: true }); 116 | for (const dir of dirs) { 117 | if (dir.isDirectory()) { 118 | if (!excludedDirs.includes(dir.name)) { 119 | await addExtensionToArchive(archive, path.resolve(vscodeExtensions(), dir.name)); 120 | } 121 | } 122 | } 123 | 124 | await archive.finalize(); 125 | } 126 | 127 | if (mode === 'builtin') { 128 | archiveBuiltins(); 129 | } else { 130 | archiveExternal(); 131 | } 132 | -------------------------------------------------------------------------------- /src/bundle.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************** 2 | * Copyright (C) 2019 TypeFox and others. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v. 2.0 which is available at 6 | * http://www.eclipse.org/legal/epl-2.0. 7 | * 8 | * This Source Code may also be made available under the following Secondary 9 | * Licenses when the conditions for such availability set forth in the Eclipse 10 | * Public License v. 2.0 are satisfied: GNU General Public License, version 2 11 | * with the GNU Classpath Exception which is available at 12 | * https://www.gnu.org/software/classpath/license.html. 13 | * 14 | * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 15 | ********************************************************************************/ 16 | 17 | // @ts-check 18 | const { src, vscode, run } = require('./paths.js'); 19 | module.exports = run('node', [src('vscode-bundle.js')], vscode()); 20 | -------------------------------------------------------------------------------- /src/check-dependencies.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************** 2 | * Copyright (C) 2024 ST Microelectronics and others. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v. 2.0 which is available at 6 | * http://www.eclipse.org/legal/epl-2.0. 7 | * 8 | * This Source Code may also be made available under the following Secondary 9 | * Licenses when the conditions for such availability set forth in the Eclipse 10 | * Public License v. 2.0 are satisfied: GNU General Public License, version 2 11 | * with the GNU Classpath Exception which is available at 12 | * https://www.gnu.org/software/classpath/license.html. 13 | * 14 | * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 15 | ********************************************************************************/ 16 | 17 | const { promises: fs } = require('fs'); 18 | const fetch = require('node-fetch'); 19 | const path = require('path'); 20 | const { glob } = require('glob'); 21 | const { rgPath } = require('@vscode/ripgrep'); 22 | 23 | const yargs = require('yargs'); 24 | const { inherits } = require('util'); 25 | 26 | const { token, dir } = yargs.option('token', { 27 | type: 'string', 28 | }).option('dir', { 29 | type: 'string', 30 | demandOption: true 31 | }).argv; 32 | 33 | console.log(`processing ${dir}`); 34 | 35 | checkDependencies(); 36 | 37 | async function checkDependencies() { 38 | const allFailed = new Set(); 39 | glob(`${dir}/*/*(yarn.lock|package-lock.json)`, async (err, files) => { 40 | const { execa } = await import('execa'); 41 | 42 | if (token) { 43 | console.log('Automatically opening IP tickets'); 44 | } 45 | 46 | for (file of files) { 47 | console.log(`inspecting ${file}...`); 48 | try { 49 | const javaArgs = ['-jar', 'dash-licenses.jar', '-summary', 'summary.txt']; 50 | if (token) { 51 | javaArgs.push('-review', '-project', 'ecd.theia', '-token', token); 52 | } 53 | javaArgs.push(file); 54 | await execa('java', javaArgs, { stdout: 'inherit', stderr: 'inherit'}); 55 | console.log('OK\n'); 56 | } catch (e) { 57 | // ignore 58 | console.log('\x1b[31mFailures\x1b[0m\n'); 59 | } 60 | 61 | const cp = execa(rgPath, ['restricted', 'summary.txt']); 62 | try { 63 | const { stdout } = await cp; 64 | const lines = stdout.split(/\r?\n|\r|\n/g); 65 | lines.forEach(line => allFailed.add(line)); 66 | console.log(stdout); 67 | } catch (e) { 68 | if (cp.exitCode !== 1) { // ripgrep returns 1 for "no matches found" 69 | console.error(e); 70 | } 71 | } 72 | } 73 | 74 | if (allFailed.size > 0) { 75 | console.log('\x1b[31mIPCheck failed for:\x1b[0m'); 76 | for (line of allFailed) { 77 | console.log(line); 78 | } 79 | } else { 80 | console.log('IP check OK'); 81 | } 82 | }); 83 | 84 | } -------------------------------------------------------------------------------- /src/checkout-latest-vscode.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************** 2 | * Copyright (C) 2020 Ericsson and others. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v. 2.0 which is available at 6 | * http://www.eclipse.org/legal/epl-2.0. 7 | * 8 | * This Source Code may also be made available under the following Secondary 9 | * Licenses when the conditions for such availability set forth in the Eclipse 10 | * Public License v. 2.0 are satisfied: GNU General Public License, version 2 11 | * with the GNU Classpath Exception which is available at 12 | * https://www.gnu.org/software/classpath/license.html. 13 | * 14 | * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 15 | ********************************************************************************/ 16 | 17 | // @ts-check 18 | 19 | /** 20 | * Checks-out the vscode git submodule to the latest "solid" release commit/tag. 21 | * e.g. 1.45.0, 1.46.4 22 | */ 23 | const { run, vscode } = require('./paths.js'); 24 | 25 | let releaseTagRegexp = /^\d+\.\d+\.\d+$/m; 26 | 27 | try { 28 | checkoutLatestVscodeRelease(); 29 | } catch (error) { 30 | console.log('Error:', error); 31 | process.exit(1); 32 | } 33 | 34 | async function checkoutLatestVscodeRelease() { 35 | try { 36 | const latestTagSha = await run('git', ['rev-list', '--tags', '--max-count=1'], vscode()); 37 | const latestTag = await run('git', ['describe', '--tags', latestTagSha], vscode()); 38 | const match = latestTag.match(releaseTagRegexp); 39 | if (!match) { 40 | console.error(`Release tag does not look correct: ${latestTag} - bailing out\n`); 41 | process.exit(1); 42 | } else { 43 | console.debug(`Tag ${latestTag} checked: looks legit`); 44 | } 45 | await run('git', ['checkout', latestTag], vscode()); 46 | return true; 47 | } catch (error) { 48 | console.error('Error running git command:', error); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/compile.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************** 2 | * Copyright (C) 2019 TypeFox and others. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v. 2.0 which is available at 6 | * http://www.eclipse.org/legal/epl-2.0. 7 | * 8 | * This Source Code may also be made available under the following Secondary 9 | * Licenses when the conditions for such availability set forth in the Eclipse 10 | * Public License v. 2.0 are satisfied: GNU General Public License, version 2 11 | * with the GNU Classpath Exception which is available at 12 | * https://www.gnu.org/software/classpath/license.html. 13 | * 14 | * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 15 | ********************************************************************************/ 16 | 17 | const fs = require('fs'); 18 | const path = require('path'); 19 | // @ts-check 20 | const { src, vscode, run, vscodeExtensions } = require('./paths.js'); 21 | 22 | if (process.cwd() !== vscode()) { 23 | run('node', [src('compile.js')], vscode()); 24 | } else { 25 | compileExtensions(); 26 | } 27 | 28 | async function compileExtensions() { 29 | // @ts-ignore 30 | const { compileExtensionsBuildTask, compileExtensionMediaTask, compileWebExtensionsTask } = require('../vscode/build/gulpfile.extensions.js') 31 | await createMissingLockFiles(vscodeExtensions()); 32 | compileExtensionsBuildTask(); 33 | compileWebExtensionsTask(); 34 | compileExtensionMediaTask(); 35 | } 36 | 37 | async function createMissingLockFiles(extensionsPath) { 38 | let subFolderNames = fs.readdirSync(extensionsPath, { withFileTypes: true }) 39 | .filter(dirent => dirent.isDirectory()) 40 | .map(dirent => dirent.name); 41 | 42 | for (let subFolderName of subFolderNames) { 43 | let subFolderPath = path.join(extensionsPath, subFolderName); 44 | let packageLockExists = fs.existsSync(path.join(subFolderPath, 'package-lock.json')); 45 | if (!packageLockExists) { 46 | await run('npm', ['install'], subFolderPath ); 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/create-extension-pack.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************** 2 | * Copyright (C) 2021 Ericsson and others. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v. 2.0 which is available at 6 | * http://www.eclipse.org/legal/epl-2.0. 7 | * 8 | * This Source Code may also be made available under the following Secondary 9 | * Licenses when the conditions for such availability set forth in the Eclipse 10 | * Public License v. 2.0 are satisfied: GNU General Public License, version 2 11 | * with the GNU Classpath Exception which is available at 12 | * https://www.gnu.org/software/classpath/license.html. 13 | * 14 | * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 15 | ********************************************************************************/ 16 | 17 | /* 18 | * Creates an extension package referencing all built-in extensions previously 19 | * created during build time i.e. by executing yarn 20 | * 21 | * Extensions will be skipped if a corresponding .vsix file is not found under the 'dist' 22 | * folder and also not found under the extension registry. 23 | */ 24 | // @ts-check 25 | const fs = require('fs-extra'); 26 | const path = require('path'); 27 | const vsce = require('@vscode/vsce'); 28 | const yargs = require('yargs'); 29 | 30 | const { computeVersion, resolveVscodeVersion, isPublished } = require('./version'); 31 | const { dist, extensions, run, theiaExtension } = require('./paths.js'); 32 | 33 | const { tag, force } = yargs.option('tag', { 34 | choices: ['latest', 'next'] 35 | }).demandOption('tag') 36 | .option('force', { 37 | description: 'Create extension pack even if it is found to be already available', 38 | boolean: true, 39 | default: false 40 | }).argv; 41 | 42 | const packageJson = 'package.json' 43 | const categories = ['Extension Packs']; 44 | const packName = 'builtin-extension-pack'; 45 | const publisher = 'eclipse-theia'; 46 | const repository = 'https://github.com/eclipse-theia/vscode-builtin-extensions'; 47 | 48 | /** 49 | * The following are external builtin extensions suitable to be included in the 'builtin-extension-pack' 50 | * The source code of these external extensions is not included in the vscode repository but are however 51 | * fetched by vscode at build time. 52 | * file://./..//vscode/product.json#builtInExtensions 53 | */ 54 | const externalBuiltins = ['ms-vscode.js-debug-companion', 'ms-vscode.js-debug']; 55 | 56 | (async () => { 57 | const vscodeVersion = await resolveVscodeVersion(); 58 | const packVersion = await computeVersion(tag); 59 | const extPackNameAndVersion = packName + '-' + packVersion; 60 | 61 | const extPackVsixPath = dist(packName + '-' + packVersion + '.vsix'); 62 | const extensionPackAlreadyAvailable = await isAvailable(extPackVsixPath, packName, packVersion, publisher); 63 | if (extensionPackAlreadyAvailable && !force) { 64 | console.log("Exiting as this extension package is already created or published: " + extPackVsixPath); 65 | return; 66 | } 67 | 68 | const extPackSrcFolder = theiaExtension(extPackNameAndVersion); 69 | if (!fs.existsSync(extPackSrcFolder)) { 70 | await fs.mkdir(extPackSrcFolder); 71 | } 72 | 73 | const extPack = {}; 74 | extPack.name = packName; 75 | extPack.displayName = packName; 76 | extPack.description = 'Builtin extension pack associated to a version of vscode'; 77 | extPack.version = packVersion; 78 | extPack.publisher = publisher; 79 | extPack.license = 'EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0'; 80 | extPack.categories = categories; 81 | extPack.engines = { vscode: '^' + vscodeVersion }; 82 | extPack.repository = repository; 83 | extPack.extensionPack = await resolveExtensions([]); 84 | 85 | if (extPack.extensionPack.length === 0) { 86 | process.exitCode = 1; 87 | console.error('Aborting: No extension was found available for this version: ' + packVersion); 88 | return; 89 | } 90 | 91 | const packFolderPath = path.join(extPackSrcFolder, '..', extPackNameAndVersion) 92 | const packJsonPath = path.join(packFolderPath, packageJson); 93 | const licensePath = path.join(packFolderPath, 'LICENSE.txt'); 94 | const readmePath = path.join(packFolderPath, 'README.md'); 95 | 96 | fs.writeFileSync(packJsonPath, JSON.stringify(extPack, null, 2), 'utf-8'); 97 | console.log('Generated ' + packageJson + ' file at: ' + packJsonPath); 98 | fs.writeFileSync(licensePath, generateLicense()); 99 | fs.writeFileSync(readmePath, generateReadme()); 100 | 101 | await createPackageLock(packFolderPath); 102 | await vsce.createVSIX({ 103 | 'cwd': packFolderPath, 104 | 'packagePath': dist(), 105 | 'useYarn': false 106 | }); 107 | 108 | async function resolveExtensions(extensionsArr) { 109 | await resolveVscodeExtensions(extensionsArr); 110 | await resolveExternalBuiltins(extensionsArr); 111 | 112 | return Promise.resolve(extensionsArr); 113 | } 114 | 115 | async function resolveVscodeExtensions(extensionsArr) { 116 | for (const extension of fs.readdirSync(extensions())) { 117 | const extDataPath = extensions(extension, packageJson); 118 | if (!fs.existsSync(extDataPath)) { 119 | console.log('No ' + packageJson + ' found for: ' + extension); 120 | continue; 121 | } 122 | 123 | const content = fs.readFileSync(extDataPath, 'utf-8'); 124 | const extData = JSON.parse(content); 125 | 126 | const extVsixPath = dist(extData.name + '-' + packVersion + '.vsix'); 127 | if (!(await isAvailable(extVsixPath, extData.name, packVersion))) { 128 | console.log("Skipping extension, i.e. .vsix is not found and " + 129 | "neither published in the registry : " + extVsixPath); 130 | continue; 131 | } 132 | 133 | const extensionId = extData.publisher + '.' + extData.name; 134 | console.log('Adding: ' + extensionId); 135 | extensionsArr.push(extensionId); 136 | } 137 | } 138 | 139 | async function resolveExternalBuiltins(extensionsArr) { 140 | for (const id of externalBuiltins) { 141 | const idFields = id.split('.', 2); // namespace.name 142 | // Validation of version is not required as they are not published every release 143 | const version = ''; 144 | if (!(await isAvailable(undefined, idFields[1], version, idFields[0]))) { 145 | console.log("Skipping extension, as it's not found in the registry : " + id); 146 | continue; 147 | } 148 | 149 | console.log('Adding: ' + id); 150 | extensionsArr.push(id); 151 | } 152 | } 153 | 154 | async function isAvailable(extVsixPath, extensionName, extensionVersion, namespace = 'vscode') { 155 | if (extVsixPath && fs.existsSync(extVsixPath)) { 156 | return Promise.resolve(true); 157 | } 158 | 159 | return isPublished(extensionVersion, extensionName, namespace); 160 | } 161 | })(); 162 | 163 | /** 164 | * @param {string} folderPath 165 | */ 166 | async function createPackageLock(folderPath) { 167 | await run('npm', ['install'], folderPath); 168 | } 169 | 170 | function generateLicense() { 171 | const date = new Date(); 172 | const year = date.getFullYear(); 173 | return `Copyright(c) ${year} - Ericsson and others. 174 | 175 | This program and the accompanying materials are made available under the 176 | terms of the Eclipse Public License v. 2.0 which is available at 177 | http://www.eclipse.org/legal/epl-2.0. 178 | 179 | This Source Code may also be made available under the following Secondary 180 | Licenses when the conditions for such availability set forth in the Eclipse 181 | Public License v. 2.0 are satisfied: GNU General Public License, version 2 182 | with the GNU Classpath Exception which is available at 183 | https://www.gnu.org/software/classpath/license.html. 184 | 185 | SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 186 | `; 187 | } 188 | 189 | function generateReadme(ext) { 190 | return `# Built-in extension package 191 | 192 | ## What is this extension package? Do I need it? 193 | 194 | If you are running \`VS Code\`, \`Code OSS\` or derived product built from the VS Code repository, 195 | such as [VSCodium](https://github.com/VSCodium/vscodium), you do not need to install this extension package as 196 | the included extensions are already present - "built-in". 197 | 198 | Built-in extensions are built-along and included in \`VS Code\` and \`Code OSS\`. 199 | In consequence they may be expected to be present and used by other extensions. 200 | They are part of the [vscode GitHub repository](https://github.com/microsoft/vscode/tree/master/) and 201 | generally contribute basic functionality such as textmate grammars, used for syntax-highlighting, for some 202 | of the most popular programming languages. In some cases, more substantial features are contributed through 203 | built-in extensions (e.g. Typescript, Markdown, git, ...). Please see the description above to learn what 204 | this specific extension does. 205 | 206 | To learn more about built-in extensions, including how they are built and packaged, 207 | please see [vscode-builtin-extensions](https://github.com/eclipse-theia/vscode-builtin-extensions). 208 | 209 | This extension package may be useful for builders of \'VS Code\' derived products so it can be 210 | included as a dependency or be installed within an extension or plugin directory instead of listing each 211 | individual extension as a dependency. 212 | `; 213 | } 214 | -------------------------------------------------------------------------------- /src/download.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************** 2 | * Copyright (C) 2024 ST Microelectronics and others. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v. 2.0 which is available at 6 | * http://www.eclipse.org/legal/epl-2.0. 7 | * 8 | * This Source Code may also be made available under the following Secondary 9 | * Licenses when the conditions for such availability set forth in the Eclipse 10 | * Public License v. 2.0 are satisfied: GNU General Public License, version 2 11 | * with the GNU Classpath Exception which is available at 12 | * https://www.gnu.org/software/classpath/license.html. 13 | * 14 | * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 15 | ********************************************************************************/ 16 | 17 | const { promises: fs } = require('fs'); 18 | const fetch= require('node-fetch'); 19 | const path = require('path'); 20 | const yargs = require('yargs'); 21 | 22 | const { url, out } = yargs.option('url', { 23 | type: 'string', 24 | demandOption: true 25 | }).option('out', { 26 | type: 'string', 27 | demandOption: true 28 | }).argv; 29 | 30 | download(); 31 | 32 | async function download() { 33 | const response= await fetch(url); 34 | await fs.writeFile(path.resolve(out), await response.buffer()); 35 | }; 36 | -------------------------------------------------------------------------------- /src/get-external-builtins.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************** 2 | * Copyright (C) 2022 Ericsson and others. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v. 2.0 which is available at 6 | * http://www.eclipse.org/legal/epl-2.0. 7 | * 8 | * This Source Code may also be made available under the following Secondary 9 | * Licenses when the conditions for such availability set forth in the Eclipse 10 | * Public License v. 2.0 are satisfied: GNU General Public License, version 2 11 | * with the GNU Classpath Exception which is available at 12 | * https://www.gnu.org/software/classpath/license.html. 13 | * 14 | * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 15 | ********************************************************************************/ 16 | 17 | // @ts-check 18 | 19 | /** 20 | * Clone and check-out the vscode external builtin extensions repositories, each to the version 21 | * that's expected for the current vscode baseline (as defined in vscode's product.json) 22 | */ 23 | const { run, externalBuiltinsRepos, vscode } = require('./paths.js'); 24 | const fs = require('fs-extra'); 25 | const colors = require('colors'); 26 | colors.enable(); 27 | /** run log */ 28 | var log = []; 29 | 30 | CloneCheckoutExternalBuiltins(); 31 | 32 | async function CloneCheckoutExternalBuiltins() { 33 | /** Path of `vscode` product.json file */ 34 | const prod = vscode('product.json'); 35 | const content = fs.readFileSync(prod, 'utf-8'); 36 | /** 37 | * vscode product.json section where we find info about external builtins 38 | * @type ProductBuiltInExtensionEntry[] 39 | */ 40 | const prodJsonExts = JSON.parse(content).builtInExtensions; 41 | 42 | for (const entry of prodJsonExts) { 43 | // extract repo directory name from last part of git repo URL 44 | const repoName = entry.repo.split("/").slice(-1)[0]; 45 | /** @type string[] */ 46 | const repoDirectories = fs.readdirSync(externalBuiltinsRepos()); 47 | const index = repoDirectories.indexOf(repoName); 48 | try { 49 | if (index != -1) { 50 | console.info(`skipping repo already present: ${repoName}`); 51 | log.push(`Skipped cloning (already present): ${entry.repo}`); 52 | } else { 53 | console.info(`Cloning: ${entry.repo}`); 54 | await clone(entry.repo, externalBuiltinsRepos()); 55 | log.push(`Successfully cloned: ${entry.repo}`.green); 56 | } 57 | // Check-out the expected version tag 58 | const versionTag = "v" + entry.version; 59 | console.info(`checking-out: ${repoName} version: ${versionTag}`); 60 | await checkout(versionTag, externalBuiltinsRepos(repoName)); 61 | log.push(`Successfully checked-out: ${versionTag}`.green); 62 | 63 | } catch (error) { 64 | console.error(error); 65 | log.push(error.shortMessage.red); 66 | } 67 | } 68 | console.info("---------------------") 69 | console.info("Summary:") 70 | log.forEach( (e) => console.info(`- ${e}`) ); 71 | } 72 | 73 | /** 74 | * Clone the repo from the provided URL, into the provided directory 75 | * @param {string} repo URL of the git repository to clone 76 | * @param {string} dir directory in which to perform the clone operation 77 | */ 78 | async function clone(repo, dir) { 79 | // Avoid the command becoming interactive and prompting for 80 | // GitHub credentials when the repository is not found and 81 | // perhaps other scenarios 82 | process.env.GIT_TERMINAL_PROMPT = "0"; 83 | await run('git', ['clone', repo], dir); 84 | } 85 | 86 | /** 87 | * Checkout git repo in directory `dir` to the provided version `tag` 88 | * @param {string} tag git tag to checkout 89 | * @param {string} dir directory in which the git repository resides 90 | */ 91 | async function checkout(tag, dir) { 92 | await run('git', ['checkout', tag], dir); 93 | } 94 | 95 | /** 96 | * Entry from `vscode product.json` builtInExtensions[] 97 | * @typedef {object} ProductBuiltInExtensionEntry 98 | * @property {string} name 99 | * @property {string} version 100 | * @property {string} repo 101 | */ 102 | -------------------------------------------------------------------------------- /src/package-vsix.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************** 2 | * Copyright (C) 2019 Ericsson and others. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v. 2.0 which is available at 6 | * http://www.eclipse.org/legal/epl-2.0. 7 | * 8 | * This Source Code may also be made available under the following Secondary 9 | * Licenses when the conditions for such availability set forth in the Eclipse 10 | * Public License v. 2.0 are satisfied: GNU General Public License, version 2 11 | * with the GNU Classpath Exception which is available at 12 | * https://www.gnu.org/software/classpath/license.html. 13 | * 14 | * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 15 | ********************************************************************************/ 16 | 17 | // @ts-check 18 | 19 | /** 20 | * @file Package individual built-in VS Code extensions in .vsix packages. 21 | * It's assumed that the vscode git submodule has already been updated 22 | * and the wanted commit/tag checked-out, before the start of packaging. 23 | */ 24 | 25 | /** */ 26 | const fs = require('fs-extra'); 27 | const os = require('os'); 28 | const yargs = require('yargs'); 29 | const capitalize = require('capitalize'); 30 | const { dist, extensions, vscode } = require('./paths.js'); 31 | const { computeVersion, isPublished } = require('./version'); 32 | const vsce = require('@vscode/vsce'); 33 | 34 | const { tag, force } = yargs.option('tag', { 35 | choices: ['latest', 'next'] 36 | }).demandOption('tag') 37 | .option('force', { 38 | description: 'package extensions even if found to be already published', 39 | boolean: true, 40 | default: false 41 | }).argv; 42 | 43 | // extensions we do not want to package/publish, that 44 | // would otherwise be 45 | const to_skip = new Set(); 46 | to_skip.add('microsoft-authentication'); 47 | 48 | const repository = { 49 | type: 'git', 50 | url: 'https://github.com/eclipse-theia/vscode-builtin-extensions' 51 | }; 52 | 53 | (async () => { 54 | // compute the version we'll use, given the type of packaging 55 | // (latest/solid vs next/preview) and current vscode git submodule 56 | // commit checked-out 57 | let version = await computeVersion(tag); 58 | console.log(`Packaging builtins from VS Code version: ${version}\n`); 59 | 60 | const result = []; 61 | 62 | // typescript-language-features ext needs "extensions/node_modules" content 63 | // and a bit of massaging to work as standalone .vsix, so that the TS LS will 64 | // be packaged-along and available to the extension at runtime. 65 | // Basically we replace this: 66 | // "vscode.typescript-language-features",["..","node_modules"] 67 | // with this: 68 | // "vscode.typescript-language-features",[".","deps"] 69 | // const extensionsNodeModulesPath = extensions('node_modules'); 70 | // const tsLangFeaturesNMPath = extensions('typescript-language-features'); 71 | if (fs.existsSync(extensions('node_modules')) && fs.existsSync(extensions('typescript-language-features'))) { 72 | await fs.copy(extensions('node_modules'), extensions('typescript-language-features', 'deps')); 73 | console.log('Copying node_modules under typescript-language-features'); 74 | const extensionJs = extensions('typescript-language-features', 'dist', 'extension.js'); 75 | const original = '"vscode.typescript-language-features",["..","node_modules"]'; 76 | const patched = '"vscode.typescript-language-features",[".","deps"]'; 77 | const extensionJsContent = fs.readFileSync(extensionJs, 'utf-8'); 78 | if (extensionJsContent.includes(original)) { 79 | console.log('TS language compiled extension is original - patching'); 80 | fs.writeFileSync(extensionJs, extensionJsContent.replace(original, patched), 'utf-8'); 81 | } else { 82 | console.log('TS language extension is already patched') 83 | } 84 | } 85 | 86 | // html-language-features needs typescript from root node_modules. copying it to the server's 87 | // node_modules lets it survive vsix packaging 88 | if (fs.existsSync(extensions('node_modules')) && fs.existsSync(extensions('html-language-features'))) { 89 | await fs.copy(extensions('node_modules'), extensions('html-language-features', 'server', 'node_modules')); 90 | } 91 | 92 | if (!fs.existsSync(dist())) { 93 | await fs.mkdir(dist()); 94 | } 95 | 96 | for (const extension of fs.readdirSync(extensions())) { 97 | if (to_skip.has(extension)) { 98 | console.log(` (skipping extension ${extension} as per configuration`); 99 | continue; 100 | } 101 | 102 | // is this extension/version already published? 103 | try { 104 | let published = await isPublished(version, extension); 105 | if (published && !force) { 106 | console.log(` (skipping already published extension: ${extension} : v${version})`) 107 | continue; 108 | } 109 | } catch (e) { 110 | console.log('error: ' + e); 111 | continue; 112 | } 113 | 114 | const extDisplayName = capitalize.words(extension.replace('-', ' ')) + " (built-in)" 115 | const pckPath = extensions(extension, 'package.json'); 116 | const nlsPath = extensions(extension, 'package.nls.json'); 117 | const readmePath = extensions(extension, 'README.md'); 118 | const readmeContent = genReadme(extension); 119 | 120 | if (!fs.existsSync(pckPath)) { 121 | continue; 122 | } 123 | 124 | const originalContent = fs.readFileSync(pckPath, 'utf-8'); 125 | const pck = JSON.parse(originalContent); 126 | const nlsContent = fs.readFileSync(nlsPath, 'utf-8'); 127 | const nls = JSON.parse(nlsContent); 128 | 129 | // note: do change pck.publisher - it's part of the key used to 130 | // lookup extensions, and so changing it may prevent dependent extensions 131 | // from finding it 132 | pck.displayName = nls.displayName ? nls.displayName + " (built-in)" : extDisplayName; 133 | pck.description = nls.description || "Built-in extension that adds (potentially basic) support for " + capitalize(pck.name); 134 | pck.keywords = ["Built-in"]; 135 | pck.repository = repository; 136 | pck.version = version; 137 | pck.license = 'SEE LICENSE IN LICENSE-vscode.txt'; 138 | const engine = pck.engines.vscode; 139 | // Correct invalid semantic engine version 140 | if (typeof(engine) === 'string') { 141 | pck.engines.vscode = engine.replace('x', '0'); 142 | } 143 | 144 | // Prevent 'vsce' packaging errors by removing the specified icon if it does not exist. 145 | // When an icon is not provided a default icon will be applied by the registry. 146 | const icon = pck.icon; 147 | if (icon) { 148 | const iconPath = extensions(extension, icon); 149 | if (!fs.existsSync(iconPath)) { 150 | delete pck.icon; 151 | } 152 | } 153 | 154 | if (tag === 'next') { 155 | pck.preview = true; 156 | } else { 157 | pck.preview = false; 158 | } 159 | 160 | // avoid having vsce run scripts during packaging, such as "vscode-prepublish" 161 | pck.scripts = {}; 162 | 163 | const extLicense = extensions(extension, 'LICENSE-vscode.txt'); 164 | console.log('packaging vsix: ', pck.name, ' ...'); 165 | try { 166 | fs.writeFileSync(pckPath, JSON.stringify(pck, undefined, 2), 'utf-8'); 167 | fs.writeFileSync(readmePath, readmeContent, 'utf-8'); 168 | fs.copyFileSync(vscode('LICENSE.txt'), extLicense); 169 | // await run(vsce, ['package', '--yarn', '-o', dist()], extensions(extension)); 170 | await vsce.createVSIX({ 171 | 'cwd': extensions(extension), 172 | 'packagePath': dist(), 173 | 'useYarn': false, 174 | 'allowStarActivation': true 175 | }); 176 | result.push('successfully packaged: ' + pck.name); 177 | } catch (e) { 178 | result.push('failed to packaged: ' + pck.name); 179 | if (e) { 180 | console.error(e) 181 | }; 182 | } finally { 183 | fs.writeFileSync(pckPath, originalContent, 'utf-8'); 184 | fs.removeSync(readmePath); 185 | fs.removeSync(extLicense); 186 | } 187 | } 188 | 189 | console.log(result.join(os.EOL)); 190 | })(); 191 | 192 | // a very basic README to add to the extension to explain what it is 193 | function genReadme(ext) { 194 | return `# Built-in extension: ${ext} 195 | 196 | ## Disclaimer 197 | 198 | Microsoft does not endorse, build, test or publish this extension, nor are they involved with it in any other way. The only association is that they own the copyright of these extensions and the rest of vscode's [source code](https://github.com/microsoft/vscode/tree/main/extensions), which they released under the [MIT License](https://github.com/microsoft/vscode/blob/main/LICENSE.txt). A copy of the license is included in this extension. See LICENSE-vscode.txt 199 | 200 | "Original VS Code sources are Copyright (c) 2015 - present Microsoft Corporation." 201 | 202 | 203 | ## What is this extension? Do I need it? 204 | 205 | TL;DR: If you are running \`VS Code\`, \`Code OSS\` or derived product built from the VS Code repository, such as [VSCodium](https://github.com/VSCodium/vscodium), you do not need to install this extension since it's already present - "built-in". 206 | 207 | Built-in extensions are built-along and included in \`VS Code\` and \`Code OSS\`. In consequence they may be expected to be present and used by other extensions. They are part of the [vscode GitHub repository](https://github.com/microsoft/vscode/tree/main/) and generally contribute basic functionality such as textmate grammars, used for syntax-highlighting, for some of the most popular programming languages. In some cases, more substantial features are contributed through built-in extensions (e.g. Typescript, Markdown, git, ...). Please see the description above to learn what this specific extension does. 208 | 209 | To learn more about built-in extensions, including how they are built and packaged, please see [vscode-builtin-extensions](https://github.com/eclipse-theia/vscode-builtin-extensions). 210 | 211 | `; 212 | 213 | } 214 | -------------------------------------------------------------------------------- /src/paths.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************** 2 | * Copyright (C) 2019 TypeFox and others. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v. 2.0 which is available at 6 | * http://www.eclipse.org/legal/epl-2.0. 7 | * 8 | * This Source Code may also be made available under the following Secondary 9 | * Licenses when the conditions for such availability set forth in the Eclipse 10 | * Public License v. 2.0 are satisfied: GNU General Public License, version 2 11 | * with the GNU Classpath Exception which is available at 12 | * https://www.gnu.org/software/classpath/license.html. 13 | * 14 | * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 15 | ********************************************************************************/ 16 | 17 | // @ts-check 18 | const path = require('path'); 19 | const fs = require('fs-extra'); 20 | 21 | /** 22 | * @type {(...paths: string[]) => string} 23 | */ 24 | function root(...paths) { 25 | return path.join(__dirname, '..', ...paths); 26 | } 27 | /** 28 | * @type {(...paths: string[]) => string} 29 | */ 30 | function dist(...paths) { 31 | return root('dist', ...paths); 32 | } 33 | /** 34 | * @type {(...paths: string[]) => string} 35 | */ 36 | function src(...paths) { 37 | return root('src', ...paths); 38 | } 39 | /** 40 | * @type {(...paths: string[]) => string} 41 | */ 42 | function vscode(...paths) { 43 | return root('vscode', ...paths); 44 | } 45 | 46 | /** 47 | * @type {(...paths: string[]) => string} 48 | */ 49 | function vscodeExtensions(...paths) { 50 | return vscode('extensions', ...paths); 51 | } 52 | 53 | /** 54 | * @type {(...paths: string[]) => string} 55 | */ 56 | function theiaExtension(...paths) { 57 | return root('vscode-builtin-extensions', ...paths); 58 | } 59 | /** 60 | * @type {(...paths: string[]) => string} 61 | */ 62 | function extensions(...paths) { 63 | return theiaExtension('extensions', ...paths); 64 | } 65 | /** 66 | * Root directory where we have the external builtin extensions. 67 | * Dynamically created if it does not yet exists 68 | * @type {(...paths: string[]) => string} 69 | */ 70 | function externalBuiltinsRepos(...paths) { 71 | const externalExtensions = root("external-builtins", ...paths); 72 | if (! fs.pathExistsSync(externalExtensions) ) { 73 | fs.mkdirSync(externalExtensions); 74 | } 75 | return externalExtensions; 76 | } 77 | 78 | /** 79 | * Execute `command` and returns its stdout. 80 | * 81 | * Trims the last line return so you don't need to do `(await run()).trim()`. 82 | * 83 | * @type {(command: string, args?: readonly string[], cwd?: string) => Promise} 84 | */ 85 | async function run(command, args, cwd = process.cwd()) { 86 | // `execa` is an ES module so we can't `require`-it 87 | const { execa } = await import('execa'); 88 | const child = execa(command, args, { cwd, stdio: ['inherit', 'pipe', 'inherit'] }); 89 | child.stdout.pipe(process.stdout); 90 | // `execa` already trims stdout by default 91 | return (await child).stdout; 92 | } 93 | 94 | module.exports = { root, dist, src, vscode, externalBuiltinsRepos, theiaExtension, extensions, run, vscodeExtensions }; 95 | -------------------------------------------------------------------------------- /src/publish-vsix.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************** 2 | * Copyright (C) 2020 Ericsson and others. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v. 2.0 which is available at 6 | * http://www.eclipse.org/legal/epl-2.0. 7 | * 8 | * This Source Code may also be made available under the following Secondary 9 | * Licenses when the conditions for such availability set forth in the Eclipse 10 | * Public License v. 2.0 are satisfied: GNU General Public License, version 2 11 | * with the GNU Classpath Exception which is available at 12 | * https://www.gnu.org/software/classpath/license.html. 13 | * 14 | * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 15 | ********************************************************************************/ 16 | 17 | /** 18 | * Publish individual built-in VS Code extensions to an 19 | * Open VSX registry (default: open-vsx.org) . It is 20 | * assumed that the extensions to be published are present 21 | * in directory "dist" at the root of this repo. 22 | * 23 | * The publishing of the extensions is delegated to `ovsx`, 24 | * which uses the following environment variables to know 25 | * to which registry to publish-to and what personal 26 | * authentication token to use to authenticate: 27 | * OVSX_REGISTRY_URL, OVSX_PAT 28 | */ 29 | // @ts-check 30 | const fs = require('fs') 31 | const ovsx = require('ovsx'); 32 | const { dist } = require('./paths.js'); 33 | const { isPublished } = require('./version'); 34 | const PQueue = require('p-queue') 35 | 36 | const packName = 'builtin-extension-pack'; 37 | 38 | (async () => { 39 | const extensions = fs.readdirSync(dist()); 40 | 41 | /** The queue for individual builtin extensions. */ 42 | const builtinQueue = new PQueue({ concurrency: 1 }); 43 | /** The queue for extension packs. */ 44 | const packQueue = new PQueue({ concurrency: 1 }); 45 | 46 | for (const vsix of extensions) { 47 | if (vsix.startsWith(packName)) { 48 | packQueue.add(() => publishExtension(vsix)); 49 | } else { 50 | builtinQueue.add(() => publishExtension(vsix)) 51 | } 52 | } 53 | 54 | // Start the individual extension queue, and wait till it resolves. 55 | builtinQueue.start(); 56 | await builtinQueue.onIdle(); 57 | 58 | // Start the extension pack queue after the individual extensions have been published. 59 | packQueue.start(); 60 | await packQueue.onIdle(); 61 | 62 | })(); 63 | 64 | /** 65 | * Publish the extension. 66 | * @param {*} vsix the vsix extension. 67 | */ 68 | async function publishExtension(vsix) { 69 | 70 | // e.g.: bat-1.45.1.vsix 71 | // css-language-features-1.45.1.vsix 72 | // bat-1.45.2-next.5763d909d5.vsix 73 | // css-language-features-1.45.2-next.5763d909d5.vsix 74 | let regexp = /^([\w-]+)-([\d\w\.-]+)\.vsix$/m; 75 | const matches = vsix.match(new RegExp(regexp)); 76 | let [, extension, version] = matches; 77 | 78 | // Determine if the extension/version is already published. 79 | try { 80 | let found = await isPublished(version, extension); 81 | let message = `Successfully published extension: ${vsix}\n`; 82 | if (found) { 83 | console.log(`Extension ${extension} v${version} is already published - skipping!`); 84 | } else { 85 | console.log('Publishing: ', dist(vsix), ' ...'); 86 | const results = await ovsx.publish({ extensionFile: dist(vsix), yarn: false }); 87 | for (const result of results) { 88 | if (result.status === 'rejected') { 89 | message = `Error(s) Generated when publishing ${extension} v${version}!`; 90 | console.log(result.reason); 91 | } 92 | } 93 | console.log(message); 94 | } 95 | return vsix; 96 | } catch (e) { 97 | console.error(`Skipping publishing of: ${vsix}.\n`); 98 | process.exitCode = 1; 99 | throw e; 100 | } 101 | } 102 | -------------------------------------------------------------------------------- /src/version.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************** 2 | * Copyright (C) 2020 Ericsson and others. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v. 2.0 which is available at 6 | * http://www.eclipse.org/legal/epl-2.0. 7 | * 8 | * This Source Code may also be made available under the following Secondary 9 | * Licenses when the conditions for such availability set forth in the Eclipse 10 | * Public License v. 2.0 are satisfied: GNU General Public License, version 2 11 | * with the GNU Classpath Exception which is available at 12 | * https://www.gnu.org/software/classpath/license.html. 13 | * 14 | * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 15 | ********************************************************************************/ 16 | 17 | // @ts-check 18 | 19 | /** 20 | * version-related utility functions 21 | */ 22 | const {default : fetch} = require('node-fetch'); 23 | const fs = require('fs') 24 | const { run, vscode } = require('./paths.js'); 25 | 26 | const OPEN_VSX_ORG_URL = 'https://open-vsx.org' 27 | 28 | /** 29 | * Returns the version to use when packaging built-in extensions. Based 30 | * on VS Code submodule version and whether it's to be a solid or preview 31 | * release 32 | * 33 | * @param {'latest' | 'next'} releaseType 34 | * @returns {Promise} 35 | */ 36 | async function computeVersion(releaseType) { 37 | let version = await resolveVscodeVersion(); 38 | // Use VS Code version and SHA when packaging 'next': 39 | if (releaseType === 'next') { 40 | const [major, minor, bugfix] = version.split('.'); 41 | const shortRevision = await run('git', ['rev-parse', '--short', 'HEAD'], vscode()); 42 | version = `${major}.${minor}.${bugfix}-next.${shortRevision}`; 43 | } 44 | return version; 45 | } 46 | 47 | async function resolveVscodeVersion() { 48 | const { version = '0.0.1' } = JSON.parse(await fs.promises.readFile(vscode('package.json'), 'utf-8')); 49 | return version; 50 | } 51 | 52 | /** 53 | * Returns whether an extension is already published on the currently 54 | * set registry (default: https://open-vsx.org) 55 | */ 56 | async function isPublished(version, extension, namespace = 'vscode') { 57 | try { 58 | const registry = process.env.OVSX_REGISTRY_URL ? process.env.OVSX_REGISTRY_URL : OPEN_VSX_ORG_URL; 59 | let url = `${registry}/api/${namespace}/${extension}`; 60 | if (version) { url += "/" + version; } 61 | const response = await fetch(url); 62 | return response.ok; 63 | } catch (e) { 64 | console.log(e); 65 | return false; 66 | } 67 | } 68 | 69 | module.exports = { computeVersion, isPublished, resolveVscodeVersion }; 70 | -------------------------------------------------------------------------------- /src/vscode-bundle.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************** 2 | * Copyright (C) 2019 TypeFox and others. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v. 2.0 which is available at 6 | * http://www.eclipse.org/legal/epl-2.0. 7 | * 8 | * This Source Code may also be made available under the following Secondary 9 | * Licenses when the conditions for such availability set forth in the Eclipse 10 | * Public License v. 2.0 are satisfied: GNU General Public License, version 2 11 | * with the GNU Classpath Exception which is available at 12 | * https://www.gnu.org/software/classpath/license.html. 13 | * 14 | * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 15 | ********************************************************************************/ 16 | 17 | // @ts-check 18 | const rimraf = require('../vscode/node_modules/rimraf'); 19 | const vfs = require('../vscode/node_modules/vinyl-fs'); 20 | const ext = require('../vscode/build/lib/extensions'); 21 | const { theiaExtension, extensions, run } = require('./paths.js'); 22 | 23 | rimraf.sync(extensions()); 24 | (async () => { 25 | await new Promise((resolve, reject) => { 26 | ext.packageLocalExtensionsStream(false, false) 27 | .pipe(vfs.dest(theiaExtension())) 28 | .on('error', reject) 29 | .on('end', resolve); 30 | }); 31 | await run('yarn', ['install', '--production'], extensions('emmet')); 32 | })(); 33 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "experimentalDecorators": true, 4 | "noUnusedLocals": true, 5 | "emitDecoratorMetadata": true, 6 | "downlevelIteration": true, 7 | "module": "commonjs", 8 | "moduleResolution": "node", 9 | "target": "es5", 10 | "lib": [ 11 | "es6" 12 | ], 13 | "sourceMap": true, 14 | "rootDir": "src", 15 | "allowJs": true 16 | }, 17 | "include": [ 18 | "src" 19 | ] 20 | } -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@types/archiver@^3.0.0": 6 | version "3.1.1" 7 | resolved "https://registry.yarnpkg.com/@types/archiver/-/archiver-3.1.1.tgz#10cc1be44af8911e57484342c7b3b32a5f178a1a" 8 | integrity sha512-TzVZ9204sH1TuFylfr1cw/AA/3/VldAAXswEwKLXUOzA9mDg+m6gHF9EaqKNlozcjc6knX5m1KAqJzksPLSEfw== 9 | dependencies: 10 | "@types/glob" "*" 11 | 12 | "@types/fs-extra@^9.0.0": 13 | version "9.0.13" 14 | resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45" 15 | integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA== 16 | dependencies: 17 | "@types/node" "*" 18 | 19 | "@types/glob@*": 20 | version "8.0.1" 21 | resolved "https://registry.yarnpkg.com/@types/glob/-/glob-8.0.1.tgz#6e3041640148b7764adf21ce5c7138ad454725b0" 22 | integrity sha512-8bVUjXZvJacUFkJXHdyZ9iH1Eaj5V7I8c4NdH5sQJsdXkqT4CA5Dhb4yb4VE/3asyx4L9ayZr1NIhTsWHczmMw== 23 | dependencies: 24 | "@types/minimatch" "^5.1.2" 25 | "@types/node" "*" 26 | 27 | "@types/minimatch@^5.1.2": 28 | version "5.1.2" 29 | resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" 30 | integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== 31 | 32 | "@types/node-fetch@^2.6.0": 33 | version "2.6.4" 34 | resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.4.tgz#1bc3a26de814f6bf466b25aeb1473fa1afe6a660" 35 | integrity sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg== 36 | dependencies: 37 | "@types/node" "*" 38 | form-data "^3.0.0" 39 | 40 | "@types/node@*": 41 | version "18.11.18" 42 | resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.18.tgz#8dfb97f0da23c2293e554c5a50d61ef134d7697f" 43 | integrity sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA== 44 | 45 | "@types/node@14": 46 | version "14.18.36" 47 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.36.tgz#c414052cb9d43fab67d679d5f3c641be911f5835" 48 | integrity sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ== 49 | 50 | "@vscode/ripgrep@1.15.9": 51 | version "1.15.9" 52 | resolved "https://registry.yarnpkg.com/@vscode/ripgrep/-/ripgrep-1.15.9.tgz#92279f7f28e1e49ad9a89603e10b17a4c7f9f5f1" 53 | integrity sha512-4q2PXRvUvr3bF+LsfrifmUZgSPmCNcUZo6SbEAZgArIChchkezaxLoIeQMJe/z3CCKStvaVKpBXLxN3Z8lQjFQ== 54 | dependencies: 55 | https-proxy-agent "^7.0.2" 56 | proxy-from-env "^1.1.0" 57 | yauzl "^2.9.2" 58 | 59 | "@vscode/vsce@^2.15.0": 60 | version "2.19.0" 61 | resolved "https://registry.yarnpkg.com/@vscode/vsce/-/vsce-2.19.0.tgz#342225662811245bc40d855636d000147c394b11" 62 | integrity sha512-dAlILxC5ggOutcvJY24jxz913wimGiUrHaPkk16Gm9/PGFbz1YezWtrXsTKUtJws4fIlpX2UIlVlVESWq8lkfQ== 63 | dependencies: 64 | azure-devops-node-api "^11.0.1" 65 | chalk "^2.4.2" 66 | cheerio "^1.0.0-rc.9" 67 | commander "^6.1.0" 68 | glob "^7.0.6" 69 | hosted-git-info "^4.0.2" 70 | jsonc-parser "^3.2.0" 71 | leven "^3.1.0" 72 | markdown-it "^12.3.2" 73 | mime "^1.3.4" 74 | minimatch "^3.0.3" 75 | parse-semver "^1.1.1" 76 | read "^1.0.7" 77 | semver "^5.1.0" 78 | tmp "^0.2.1" 79 | typed-rest-client "^1.8.4" 80 | url-join "^4.0.1" 81 | xml2js "^0.5.0" 82 | yauzl "^2.3.1" 83 | yazl "^2.2.2" 84 | optionalDependencies: 85 | keytar "^7.7.0" 86 | 87 | agent-base@^7.0.2: 88 | version "7.1.1" 89 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.1.tgz#bdbded7dfb096b751a2a087eeeb9664725b2e317" 90 | integrity sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA== 91 | dependencies: 92 | debug "^4.3.4" 93 | 94 | ansi-regex@^5.0.1: 95 | version "5.0.1" 96 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 97 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 98 | 99 | ansi-styles@^3.2.1: 100 | version "3.2.1" 101 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 102 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 103 | dependencies: 104 | color-convert "^1.9.0" 105 | 106 | ansi-styles@^4.0.0: 107 | version "4.3.0" 108 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 109 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 110 | dependencies: 111 | color-convert "^2.0.1" 112 | 113 | archiver-utils@^2.1.0: 114 | version "2.1.0" 115 | resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-2.1.0.tgz#e8a460e94b693c3e3da182a098ca6285ba9249e2" 116 | integrity sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw== 117 | dependencies: 118 | glob "^7.1.4" 119 | graceful-fs "^4.2.0" 120 | lazystream "^1.0.0" 121 | lodash.defaults "^4.2.0" 122 | lodash.difference "^4.5.0" 123 | lodash.flatten "^4.4.0" 124 | lodash.isplainobject "^4.0.6" 125 | lodash.union "^4.6.0" 126 | normalize-path "^3.0.0" 127 | readable-stream "^2.0.0" 128 | 129 | archiver@^3.0.3: 130 | version "3.1.1" 131 | resolved "https://registry.yarnpkg.com/archiver/-/archiver-3.1.1.tgz#9db7819d4daf60aec10fe86b16cb9258ced66ea0" 132 | integrity sha512-5Hxxcig7gw5Jod/8Gq0OneVgLYET+oNHcxgWItq4TbhOzRLKNAFUb9edAftiMKXvXfCB0vbGrJdZDNq0dWMsxg== 133 | dependencies: 134 | archiver-utils "^2.1.0" 135 | async "^2.6.3" 136 | buffer-crc32 "^0.2.1" 137 | glob "^7.1.4" 138 | readable-stream "^3.4.0" 139 | tar-stream "^2.1.0" 140 | zip-stream "^2.1.2" 141 | 142 | argparse@^2.0.1: 143 | version "2.0.1" 144 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 145 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 146 | 147 | async@^2.6.3: 148 | version "2.6.4" 149 | resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" 150 | integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== 151 | dependencies: 152 | lodash "^4.17.14" 153 | 154 | asynckit@^0.4.0: 155 | version "0.4.0" 156 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 157 | integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== 158 | 159 | azure-devops-node-api@^11.0.1: 160 | version "11.2.0" 161 | resolved "https://registry.yarnpkg.com/azure-devops-node-api/-/azure-devops-node-api-11.2.0.tgz#bf04edbef60313117a0507415eed4790a420ad6b" 162 | integrity sha512-XdiGPhrpaT5J8wdERRKs5g8E0Zy1pvOYTli7z9E8nmOn3YGp4FhtjhrOyFmX/8veWCwdI69mCHKJw6l+4J/bHA== 163 | dependencies: 164 | tunnel "0.0.6" 165 | typed-rest-client "^1.8.4" 166 | 167 | balanced-match@^1.0.0: 168 | version "1.0.2" 169 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 170 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 171 | 172 | base64-js@^1.3.1: 173 | version "1.5.1" 174 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" 175 | integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== 176 | 177 | bl@^4.0.3: 178 | version "4.1.0" 179 | resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" 180 | integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== 181 | dependencies: 182 | buffer "^5.5.0" 183 | inherits "^2.0.4" 184 | readable-stream "^3.4.0" 185 | 186 | boolbase@^1.0.0: 187 | version "1.0.0" 188 | resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" 189 | integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== 190 | 191 | brace-expansion@^1.1.7: 192 | version "1.1.11" 193 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 194 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 195 | dependencies: 196 | balanced-match "^1.0.0" 197 | concat-map "0.0.1" 198 | 199 | buffer-crc32@^0.2.1, buffer-crc32@^0.2.13, buffer-crc32@~0.2.3: 200 | version "0.2.13" 201 | resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" 202 | integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== 203 | 204 | buffer@^5.1.0, buffer@^5.5.0: 205 | version "5.7.1" 206 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" 207 | integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== 208 | dependencies: 209 | base64-js "^1.3.1" 210 | ieee754 "^1.1.13" 211 | 212 | call-bind@^1.0.0: 213 | version "1.0.2" 214 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 215 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 216 | dependencies: 217 | function-bind "^1.1.1" 218 | get-intrinsic "^1.0.2" 219 | 220 | capitalize@^2.0.2: 221 | version "2.0.4" 222 | resolved "https://registry.yarnpkg.com/capitalize/-/capitalize-2.0.4.tgz#eed7f94c6699a318eeef6e68967fe139c764b866" 223 | integrity sha512-wcSyiFqXRYyCoqu0o0ekXzJAKCLMkqWS5QWGlgTJFJKwRmI6pzcN2hBl5VPq9RzLW5Uf4FF/V/lcFfjCtVak2w== 224 | 225 | chalk@^2.4.2: 226 | version "2.4.2" 227 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 228 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 229 | dependencies: 230 | ansi-styles "^3.2.1" 231 | escape-string-regexp "^1.0.5" 232 | supports-color "^5.3.0" 233 | 234 | cheerio-select@^2.1.0: 235 | version "2.1.0" 236 | resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4" 237 | integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== 238 | dependencies: 239 | boolbase "^1.0.0" 240 | css-select "^5.1.0" 241 | css-what "^6.1.0" 242 | domelementtype "^2.3.0" 243 | domhandler "^5.0.3" 244 | domutils "^3.0.1" 245 | 246 | cheerio@^1.0.0-rc.9: 247 | version "1.0.0-rc.12" 248 | resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.12.tgz#788bf7466506b1c6bf5fae51d24a2c4d62e47683" 249 | integrity sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q== 250 | dependencies: 251 | cheerio-select "^2.1.0" 252 | dom-serializer "^2.0.0" 253 | domhandler "^5.0.3" 254 | domutils "^3.0.1" 255 | htmlparser2 "^8.0.1" 256 | parse5 "^7.0.0" 257 | parse5-htmlparser2-tree-adapter "^7.0.0" 258 | 259 | chownr@^1.1.1: 260 | version "1.1.4" 261 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" 262 | integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== 263 | 264 | ci-info@^2.0.0: 265 | version "2.0.0" 266 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" 267 | integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== 268 | 269 | cliui@^8.0.1: 270 | version "8.0.1" 271 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" 272 | integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== 273 | dependencies: 274 | string-width "^4.2.0" 275 | strip-ansi "^6.0.1" 276 | wrap-ansi "^7.0.0" 277 | 278 | color-convert@^1.9.0: 279 | version "1.9.3" 280 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 281 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 282 | dependencies: 283 | color-name "1.1.3" 284 | 285 | color-convert@^2.0.1: 286 | version "2.0.1" 287 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 288 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 289 | dependencies: 290 | color-name "~1.1.4" 291 | 292 | color-name@1.1.3: 293 | version "1.1.3" 294 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 295 | integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== 296 | 297 | color-name@~1.1.4: 298 | version "1.1.4" 299 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 300 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 301 | 302 | colors@^1.4.0: 303 | version "1.4.0" 304 | resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" 305 | integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== 306 | 307 | combined-stream@^1.0.8: 308 | version "1.0.8" 309 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 310 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 311 | dependencies: 312 | delayed-stream "~1.0.0" 313 | 314 | commander@^6.1.0: 315 | version "6.2.1" 316 | resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" 317 | integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== 318 | 319 | compress-commons@^2.1.1: 320 | version "2.1.1" 321 | resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-2.1.1.tgz#9410d9a534cf8435e3fbbb7c6ce48de2dc2f0610" 322 | integrity sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q== 323 | dependencies: 324 | buffer-crc32 "^0.2.13" 325 | crc32-stream "^3.0.1" 326 | normalize-path "^3.0.0" 327 | readable-stream "^2.3.6" 328 | 329 | concat-map@0.0.1: 330 | version "0.0.1" 331 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 332 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 333 | 334 | core-util-is@~1.0.0: 335 | version "1.0.3" 336 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" 337 | integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== 338 | 339 | crc32-stream@^3.0.1: 340 | version "3.0.1" 341 | resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-3.0.1.tgz#cae6eeed003b0e44d739d279de5ae63b171b4e85" 342 | integrity sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w== 343 | dependencies: 344 | crc "^3.4.4" 345 | readable-stream "^3.4.0" 346 | 347 | crc@^3.4.4: 348 | version "3.8.0" 349 | resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6" 350 | integrity sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ== 351 | dependencies: 352 | buffer "^5.1.0" 353 | 354 | cross-env@^7.0.3: 355 | version "7.0.3" 356 | resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" 357 | integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== 358 | dependencies: 359 | cross-spawn "^7.0.1" 360 | 361 | cross-spawn@^7.0.1, cross-spawn@^7.0.3: 362 | version "7.0.3" 363 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 364 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 365 | dependencies: 366 | path-key "^3.1.0" 367 | shebang-command "^2.0.0" 368 | which "^2.0.1" 369 | 370 | css-select@^5.1.0: 371 | version "5.1.0" 372 | resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" 373 | integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== 374 | dependencies: 375 | boolbase "^1.0.0" 376 | css-what "^6.1.0" 377 | domhandler "^5.0.2" 378 | domutils "^3.0.1" 379 | nth-check "^2.0.1" 380 | 381 | css-what@^6.1.0: 382 | version "6.1.0" 383 | resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" 384 | integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== 385 | 386 | debug@4, debug@^4.3.4: 387 | version "4.3.4" 388 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 389 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 390 | dependencies: 391 | ms "2.1.2" 392 | 393 | decompress-response@^6.0.0: 394 | version "6.0.0" 395 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" 396 | integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== 397 | dependencies: 398 | mimic-response "^3.1.0" 399 | 400 | deep-extend@^0.6.0: 401 | version "0.6.0" 402 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 403 | integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== 404 | 405 | delayed-stream@~1.0.0: 406 | version "1.0.0" 407 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 408 | integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== 409 | 410 | detect-libc@^2.0.0: 411 | version "2.0.1" 412 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd" 413 | integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w== 414 | 415 | dom-serializer@^2.0.0: 416 | version "2.0.0" 417 | resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" 418 | integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== 419 | dependencies: 420 | domelementtype "^2.3.0" 421 | domhandler "^5.0.2" 422 | entities "^4.2.0" 423 | 424 | domelementtype@^2.3.0: 425 | version "2.3.0" 426 | resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" 427 | integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== 428 | 429 | domhandler@^5.0.1, domhandler@^5.0.2, domhandler@^5.0.3: 430 | version "5.0.3" 431 | resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" 432 | integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== 433 | dependencies: 434 | domelementtype "^2.3.0" 435 | 436 | domutils@^3.0.1: 437 | version "3.0.1" 438 | resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.0.1.tgz#696b3875238338cb186b6c0612bd4901c89a4f1c" 439 | integrity sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q== 440 | dependencies: 441 | dom-serializer "^2.0.0" 442 | domelementtype "^2.3.0" 443 | domhandler "^5.0.1" 444 | 445 | emoji-regex@^8.0.0: 446 | version "8.0.0" 447 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 448 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 449 | 450 | end-of-stream@^1.1.0, end-of-stream@^1.4.1: 451 | version "1.4.4" 452 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 453 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 454 | dependencies: 455 | once "^1.4.0" 456 | 457 | entities@^4.2.0, entities@^4.3.0, entities@^4.4.0: 458 | version "4.4.0" 459 | resolved "https://registry.yarnpkg.com/entities/-/entities-4.4.0.tgz#97bdaba170339446495e653cfd2db78962900174" 460 | integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA== 461 | 462 | entities@~2.1.0: 463 | version "2.1.0" 464 | resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" 465 | integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== 466 | 467 | escalade@^3.1.1: 468 | version "3.1.1" 469 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 470 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 471 | 472 | escape-string-regexp@^1.0.5: 473 | version "1.0.5" 474 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 475 | integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== 476 | 477 | execa@^8.0.1: 478 | version "8.0.1" 479 | resolved "https://registry.yarnpkg.com/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c" 480 | integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== 481 | dependencies: 482 | cross-spawn "^7.0.3" 483 | get-stream "^8.0.1" 484 | human-signals "^5.0.0" 485 | is-stream "^3.0.0" 486 | merge-stream "^2.0.0" 487 | npm-run-path "^5.1.0" 488 | onetime "^6.0.0" 489 | signal-exit "^4.1.0" 490 | strip-final-newline "^3.0.0" 491 | 492 | expand-template@^2.0.3: 493 | version "2.0.3" 494 | resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" 495 | integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== 496 | 497 | fd-slicer@~1.1.0: 498 | version "1.1.0" 499 | resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" 500 | integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== 501 | dependencies: 502 | pend "~1.2.0" 503 | 504 | follow-redirects@^1.14.6: 505 | version "1.15.2" 506 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" 507 | integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== 508 | 509 | form-data@^3.0.0: 510 | version "3.0.1" 511 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" 512 | integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== 513 | dependencies: 514 | asynckit "^0.4.0" 515 | combined-stream "^1.0.8" 516 | mime-types "^2.1.12" 517 | 518 | fs-constants@^1.0.0: 519 | version "1.0.0" 520 | resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" 521 | integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== 522 | 523 | fs-extra@^10.0.0: 524 | version "10.1.0" 525 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" 526 | integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== 527 | dependencies: 528 | graceful-fs "^4.2.0" 529 | jsonfile "^6.0.1" 530 | universalify "^2.0.0" 531 | 532 | fs.realpath@^1.0.0: 533 | version "1.0.0" 534 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 535 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 536 | 537 | function-bind@^1.1.1: 538 | version "1.1.1" 539 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 540 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 541 | 542 | get-caller-file@^2.0.5: 543 | version "2.0.5" 544 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 545 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 546 | 547 | get-intrinsic@^1.0.2: 548 | version "1.2.0" 549 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" 550 | integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== 551 | dependencies: 552 | function-bind "^1.1.1" 553 | has "^1.0.3" 554 | has-symbols "^1.0.3" 555 | 556 | get-stream@^8.0.1: 557 | version "8.0.1" 558 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" 559 | integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== 560 | 561 | github-from-package@0.0.0: 562 | version "0.0.0" 563 | resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" 564 | integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== 565 | 566 | glob@^7.0.6, glob@^7.1.3, glob@^7.1.4, glob@^7.2.3: 567 | version "7.2.3" 568 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" 569 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 570 | dependencies: 571 | fs.realpath "^1.0.0" 572 | inflight "^1.0.4" 573 | inherits "2" 574 | minimatch "^3.1.1" 575 | once "^1.3.0" 576 | path-is-absolute "^1.0.0" 577 | 578 | graceful-fs@^4.1.6, graceful-fs@^4.2.0: 579 | version "4.2.10" 580 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" 581 | integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== 582 | 583 | has-flag@^3.0.0: 584 | version "3.0.0" 585 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 586 | integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== 587 | 588 | has-symbols@^1.0.3: 589 | version "1.0.3" 590 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" 591 | integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== 592 | 593 | has@^1.0.3: 594 | version "1.0.3" 595 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 596 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 597 | dependencies: 598 | function-bind "^1.1.1" 599 | 600 | hosted-git-info@^4.0.2: 601 | version "4.1.0" 602 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" 603 | integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== 604 | dependencies: 605 | lru-cache "^6.0.0" 606 | 607 | htmlparser2@^8.0.1: 608 | version "8.0.1" 609 | resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.1.tgz#abaa985474fcefe269bc761a779b544d7196d010" 610 | integrity sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA== 611 | dependencies: 612 | domelementtype "^2.3.0" 613 | domhandler "^5.0.2" 614 | domutils "^3.0.1" 615 | entities "^4.3.0" 616 | 617 | https-proxy-agent@^7.0.2: 618 | version "7.0.4" 619 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz#8e97b841a029ad8ddc8731f26595bad868cb4168" 620 | integrity sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg== 621 | dependencies: 622 | agent-base "^7.0.2" 623 | debug "4" 624 | 625 | human-signals@^5.0.0: 626 | version "5.0.0" 627 | resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28" 628 | integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== 629 | 630 | ieee754@^1.1.13: 631 | version "1.2.1" 632 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" 633 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== 634 | 635 | inflight@^1.0.4: 636 | version "1.0.6" 637 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 638 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 639 | dependencies: 640 | once "^1.3.0" 641 | wrappy "1" 642 | 643 | inherits@2, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: 644 | version "2.0.4" 645 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 646 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 647 | 648 | ini@~1.3.0: 649 | version "1.3.8" 650 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" 651 | integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== 652 | 653 | is-ci@^2.0.0: 654 | version "2.0.0" 655 | resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" 656 | integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== 657 | dependencies: 658 | ci-info "^2.0.0" 659 | 660 | is-fullwidth-code-point@^3.0.0: 661 | version "3.0.0" 662 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 663 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 664 | 665 | is-stream@^3.0.0: 666 | version "3.0.0" 667 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" 668 | integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== 669 | 670 | isarray@~1.0.0: 671 | version "1.0.0" 672 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 673 | integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== 674 | 675 | isexe@^2.0.0: 676 | version "2.0.0" 677 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 678 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 679 | 680 | jsonc-parser@^3.2.0: 681 | version "3.2.0" 682 | resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" 683 | integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== 684 | 685 | jsonfile@^6.0.1: 686 | version "6.1.0" 687 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" 688 | integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== 689 | dependencies: 690 | universalify "^2.0.0" 691 | optionalDependencies: 692 | graceful-fs "^4.1.6" 693 | 694 | keytar@^7.7.0: 695 | version "7.9.0" 696 | resolved "https://registry.yarnpkg.com/keytar/-/keytar-7.9.0.tgz#4c6225708f51b50cbf77c5aae81721964c2918cb" 697 | integrity sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ== 698 | dependencies: 699 | node-addon-api "^4.3.0" 700 | prebuild-install "^7.0.1" 701 | 702 | lazystream@^1.0.0: 703 | version "1.0.1" 704 | resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.1.tgz#494c831062f1f9408251ec44db1cba29242a2638" 705 | integrity sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw== 706 | dependencies: 707 | readable-stream "^2.0.5" 708 | 709 | leven@^3.1.0: 710 | version "3.1.0" 711 | resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" 712 | integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== 713 | 714 | linkify-it@^3.0.1: 715 | version "3.0.3" 716 | resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-3.0.3.tgz#a98baf44ce45a550efb4d49c769d07524cc2fa2e" 717 | integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ== 718 | dependencies: 719 | uc.micro "^1.0.1" 720 | 721 | lodash.defaults@^4.2.0: 722 | version "4.2.0" 723 | resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" 724 | integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ== 725 | 726 | lodash.difference@^4.5.0: 727 | version "4.5.0" 728 | resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" 729 | integrity sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA== 730 | 731 | lodash.flatten@^4.4.0: 732 | version "4.4.0" 733 | resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" 734 | integrity sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g== 735 | 736 | lodash.isplainobject@^4.0.6: 737 | version "4.0.6" 738 | resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" 739 | integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== 740 | 741 | lodash.union@^4.6.0: 742 | version "4.6.0" 743 | resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" 744 | integrity sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw== 745 | 746 | lodash@^4.17.14: 747 | version "4.17.21" 748 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 749 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 750 | 751 | lru-cache@^6.0.0: 752 | version "6.0.0" 753 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 754 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 755 | dependencies: 756 | yallist "^4.0.0" 757 | 758 | markdown-it@^12.3.2: 759 | version "12.3.2" 760 | resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.3.2.tgz#bf92ac92283fe983fe4de8ff8abfb5ad72cd0c90" 761 | integrity sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg== 762 | dependencies: 763 | argparse "^2.0.1" 764 | entities "~2.1.0" 765 | linkify-it "^3.0.1" 766 | mdurl "^1.0.1" 767 | uc.micro "^1.0.5" 768 | 769 | mdurl@^1.0.1: 770 | version "1.0.1" 771 | resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" 772 | integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== 773 | 774 | merge-stream@^2.0.0: 775 | version "2.0.0" 776 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 777 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 778 | 779 | mime-db@1.52.0: 780 | version "1.52.0" 781 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" 782 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 783 | 784 | mime-types@^2.1.12: 785 | version "2.1.35" 786 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" 787 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 788 | dependencies: 789 | mime-db "1.52.0" 790 | 791 | mime@^1.3.4: 792 | version "1.6.0" 793 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 794 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 795 | 796 | mimic-fn@^4.0.0: 797 | version "4.0.0" 798 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" 799 | integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== 800 | 801 | mimic-response@^3.1.0: 802 | version "3.1.0" 803 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" 804 | integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== 805 | 806 | minimatch@^3.0.3, minimatch@^3.1.1: 807 | version "3.1.2" 808 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 809 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 810 | dependencies: 811 | brace-expansion "^1.1.7" 812 | 813 | minimist@^1.2.0, minimist@^1.2.3: 814 | version "1.2.8" 815 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" 816 | integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== 817 | 818 | mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: 819 | version "0.5.3" 820 | resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" 821 | integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== 822 | 823 | ms@2.1.2: 824 | version "2.1.2" 825 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 826 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 827 | 828 | mute-stream@~0.0.4: 829 | version "0.0.8" 830 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" 831 | integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== 832 | 833 | napi-build-utils@^1.0.1: 834 | version "1.0.2" 835 | resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" 836 | integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== 837 | 838 | node-abi@^3.3.0: 839 | version "3.40.0" 840 | resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.40.0.tgz#51d8ed44534f70ff1357dfbc3a89717b1ceac1b4" 841 | integrity sha512-zNy02qivjjRosswoYmPi8hIKJRr8MpQyeKT6qlcq/OnOgA3Rhoae+IYOqsM9V5+JnHWmxKnWOT2GxvtqdtOCXA== 842 | dependencies: 843 | semver "^7.3.5" 844 | 845 | node-addon-api@^4.3.0: 846 | version "4.3.0" 847 | resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f" 848 | integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ== 849 | 850 | node-fetch@^2.6.0: 851 | version "2.6.12" 852 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.12.tgz#02eb8e22074018e3d5a83016649d04df0e348fba" 853 | integrity sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g== 854 | dependencies: 855 | whatwg-url "^5.0.0" 856 | 857 | normalize-path@^3.0.0: 858 | version "3.0.0" 859 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 860 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 861 | 862 | npm-run-path@^5.1.0: 863 | version "5.1.0" 864 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00" 865 | integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== 866 | dependencies: 867 | path-key "^4.0.0" 868 | 869 | nth-check@^2.0.1: 870 | version "2.1.1" 871 | resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" 872 | integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== 873 | dependencies: 874 | boolbase "^1.0.0" 875 | 876 | object-inspect@^1.9.0: 877 | version "1.12.3" 878 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" 879 | integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== 880 | 881 | once@^1.3.0, once@^1.3.1, once@^1.4.0: 882 | version "1.4.0" 883 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 884 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 885 | dependencies: 886 | wrappy "1" 887 | 888 | onetime@^6.0.0: 889 | version "6.0.0" 890 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" 891 | integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== 892 | dependencies: 893 | mimic-fn "^4.0.0" 894 | 895 | ovsx@^0.8.1: 896 | version "0.8.1" 897 | resolved "https://registry.yarnpkg.com/ovsx/-/ovsx-0.8.1.tgz#6510e276130d5ac1dc50642fd19a521b826fbc10" 898 | integrity sha512-smfdxuSScUwzEsNgxdEWTmWVYaRmb2Xa1qF/LadMtowq/gg01+zNxDGUAlqALin82RBj++IF0O+qrzrC10O7ww== 899 | dependencies: 900 | "@vscode/vsce" "^2.15.0" 901 | commander "^6.1.0" 902 | follow-redirects "^1.14.6" 903 | is-ci "^2.0.0" 904 | leven "^3.1.0" 905 | semver "^5.1.0" 906 | tmp "^0.2.1" 907 | 908 | p-queue@^2.4.2: 909 | version "2.4.2" 910 | resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-2.4.2.tgz#03609826682b743be9a22dba25051bd46724fc34" 911 | integrity sha512-n8/y+yDJwBjoLQe1GSJbbaYQLTI7QHNZI2+rpmCDbe++WLf9HC3gf6iqj5yfPAV71W4UF3ql5W1+UBPXoXTxng== 912 | 913 | parse-semver@^1.1.1: 914 | version "1.1.1" 915 | resolved "https://registry.yarnpkg.com/parse-semver/-/parse-semver-1.1.1.tgz#9a4afd6df063dc4826f93fba4a99cf223f666cb8" 916 | integrity sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ== 917 | dependencies: 918 | semver "^5.1.0" 919 | 920 | parse5-htmlparser2-tree-adapter@^7.0.0: 921 | version "7.0.0" 922 | resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1" 923 | integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g== 924 | dependencies: 925 | domhandler "^5.0.2" 926 | parse5 "^7.0.0" 927 | 928 | parse5@^7.0.0: 929 | version "7.1.2" 930 | resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" 931 | integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== 932 | dependencies: 933 | entities "^4.4.0" 934 | 935 | path-is-absolute@^1.0.0: 936 | version "1.0.1" 937 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 938 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 939 | 940 | path-key@^3.1.0: 941 | version "3.1.1" 942 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 943 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 944 | 945 | path-key@^4.0.0: 946 | version "4.0.0" 947 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" 948 | integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== 949 | 950 | pend@~1.2.0: 951 | version "1.2.0" 952 | resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" 953 | integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== 954 | 955 | prebuild-install@^7.0.1: 956 | version "7.1.1" 957 | resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45" 958 | integrity sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw== 959 | dependencies: 960 | detect-libc "^2.0.0" 961 | expand-template "^2.0.3" 962 | github-from-package "0.0.0" 963 | minimist "^1.2.3" 964 | mkdirp-classic "^0.5.3" 965 | napi-build-utils "^1.0.1" 966 | node-abi "^3.3.0" 967 | pump "^3.0.0" 968 | rc "^1.2.7" 969 | simple-get "^4.0.0" 970 | tar-fs "^2.0.0" 971 | tunnel-agent "^0.6.0" 972 | 973 | process-nextick-args@~2.0.0: 974 | version "2.0.1" 975 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 976 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 977 | 978 | proxy-from-env@^1.1.0: 979 | version "1.1.0" 980 | resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" 981 | integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== 982 | 983 | pump@^3.0.0: 984 | version "3.0.0" 985 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 986 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 987 | dependencies: 988 | end-of-stream "^1.1.0" 989 | once "^1.3.1" 990 | 991 | qs@^6.9.1: 992 | version "6.11.0" 993 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" 994 | integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== 995 | dependencies: 996 | side-channel "^1.0.4" 997 | 998 | rc@^1.2.7: 999 | version "1.2.8" 1000 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 1001 | integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== 1002 | dependencies: 1003 | deep-extend "^0.6.0" 1004 | ini "~1.3.0" 1005 | minimist "^1.2.0" 1006 | strip-json-comments "~2.0.1" 1007 | 1008 | read@^1.0.7: 1009 | version "1.0.7" 1010 | resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" 1011 | integrity sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ== 1012 | dependencies: 1013 | mute-stream "~0.0.4" 1014 | 1015 | readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.3.6: 1016 | version "2.3.7" 1017 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" 1018 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 1019 | dependencies: 1020 | core-util-is "~1.0.0" 1021 | inherits "~2.0.3" 1022 | isarray "~1.0.0" 1023 | process-nextick-args "~2.0.0" 1024 | safe-buffer "~5.1.1" 1025 | string_decoder "~1.1.1" 1026 | util-deprecate "~1.0.1" 1027 | 1028 | readable-stream@^3.1.1, readable-stream@^3.4.0: 1029 | version "3.6.0" 1030 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" 1031 | integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== 1032 | dependencies: 1033 | inherits "^2.0.3" 1034 | string_decoder "^1.1.1" 1035 | util-deprecate "^1.0.1" 1036 | 1037 | require-directory@^2.1.1: 1038 | version "2.1.1" 1039 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1040 | integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== 1041 | 1042 | rimraf@^3.0.0: 1043 | version "3.0.2" 1044 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 1045 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1046 | dependencies: 1047 | glob "^7.1.3" 1048 | 1049 | safe-buffer@^5.0.1, safe-buffer@~5.2.0: 1050 | version "5.2.1" 1051 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1052 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1053 | 1054 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 1055 | version "5.1.2" 1056 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1057 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1058 | 1059 | sax@>=0.6.0: 1060 | version "1.2.4" 1061 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" 1062 | integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== 1063 | 1064 | semver@^5.1.0: 1065 | version "5.7.1" 1066 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 1067 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1068 | 1069 | semver@^7.3.5: 1070 | version "7.5.1" 1071 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.1.tgz#c90c4d631cf74720e46b21c1d37ea07edfab91ec" 1072 | integrity sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw== 1073 | dependencies: 1074 | lru-cache "^6.0.0" 1075 | 1076 | shebang-command@^2.0.0: 1077 | version "2.0.0" 1078 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1079 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1080 | dependencies: 1081 | shebang-regex "^3.0.0" 1082 | 1083 | shebang-regex@^3.0.0: 1084 | version "3.0.0" 1085 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1086 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1087 | 1088 | side-channel@^1.0.4: 1089 | version "1.0.4" 1090 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" 1091 | integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== 1092 | dependencies: 1093 | call-bind "^1.0.0" 1094 | get-intrinsic "^1.0.2" 1095 | object-inspect "^1.9.0" 1096 | 1097 | signal-exit@^4.1.0: 1098 | version "4.1.0" 1099 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" 1100 | integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== 1101 | 1102 | simple-concat@^1.0.0: 1103 | version "1.0.1" 1104 | resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" 1105 | integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== 1106 | 1107 | simple-get@^4.0.0: 1108 | version "4.0.1" 1109 | resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" 1110 | integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== 1111 | dependencies: 1112 | decompress-response "^6.0.0" 1113 | once "^1.3.1" 1114 | simple-concat "^1.0.0" 1115 | 1116 | string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: 1117 | version "4.2.3" 1118 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 1119 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1120 | dependencies: 1121 | emoji-regex "^8.0.0" 1122 | is-fullwidth-code-point "^3.0.0" 1123 | strip-ansi "^6.0.1" 1124 | 1125 | string_decoder@^1.1.1: 1126 | version "1.3.0" 1127 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 1128 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 1129 | dependencies: 1130 | safe-buffer "~5.2.0" 1131 | 1132 | string_decoder@~1.1.1: 1133 | version "1.1.1" 1134 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 1135 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 1136 | dependencies: 1137 | safe-buffer "~5.1.0" 1138 | 1139 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 1140 | version "6.0.1" 1141 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1142 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1143 | dependencies: 1144 | ansi-regex "^5.0.1" 1145 | 1146 | strip-final-newline@^3.0.0: 1147 | version "3.0.0" 1148 | resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" 1149 | integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== 1150 | 1151 | strip-json-comments@~2.0.1: 1152 | version "2.0.1" 1153 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 1154 | integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== 1155 | 1156 | supports-color@^5.3.0: 1157 | version "5.5.0" 1158 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1159 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1160 | dependencies: 1161 | has-flag "^3.0.0" 1162 | 1163 | tar-fs@^2.0.0: 1164 | version "2.1.1" 1165 | resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" 1166 | integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== 1167 | dependencies: 1168 | chownr "^1.1.1" 1169 | mkdirp-classic "^0.5.2" 1170 | pump "^3.0.0" 1171 | tar-stream "^2.1.4" 1172 | 1173 | tar-stream@^2.1.0, tar-stream@^2.1.4: 1174 | version "2.2.0" 1175 | resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" 1176 | integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== 1177 | dependencies: 1178 | bl "^4.0.3" 1179 | end-of-stream "^1.4.1" 1180 | fs-constants "^1.0.0" 1181 | inherits "^2.0.3" 1182 | readable-stream "^3.1.1" 1183 | 1184 | tmp@^0.2.1: 1185 | version "0.2.1" 1186 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" 1187 | integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== 1188 | dependencies: 1189 | rimraf "^3.0.0" 1190 | 1191 | tr46@~0.0.3: 1192 | version "0.0.3" 1193 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" 1194 | integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== 1195 | 1196 | tunnel-agent@^0.6.0: 1197 | version "0.6.0" 1198 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 1199 | integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== 1200 | dependencies: 1201 | safe-buffer "^5.0.1" 1202 | 1203 | tunnel@0.0.6: 1204 | version "0.0.6" 1205 | resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" 1206 | integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== 1207 | 1208 | typed-rest-client@^1.8.4: 1209 | version "1.8.9" 1210 | resolved "https://registry.yarnpkg.com/typed-rest-client/-/typed-rest-client-1.8.9.tgz#e560226bcadfe71b0fb5c416b587f8da3b8f92d8" 1211 | integrity sha512-uSmjE38B80wjL85UFX3sTYEUlvZ1JgCRhsWj/fJ4rZ0FqDUFoIuodtiVeE+cUqiVTOKPdKrp/sdftD15MDek6g== 1212 | dependencies: 1213 | qs "^6.9.1" 1214 | tunnel "0.0.6" 1215 | underscore "^1.12.1" 1216 | 1217 | uc.micro@^1.0.1, uc.micro@^1.0.5: 1218 | version "1.0.6" 1219 | resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" 1220 | integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== 1221 | 1222 | underscore@^1.12.1: 1223 | version "1.13.6" 1224 | resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441" 1225 | integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A== 1226 | 1227 | universalify@^2.0.0: 1228 | version "2.0.0" 1229 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" 1230 | integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== 1231 | 1232 | url-join@^4.0.1: 1233 | version "4.0.1" 1234 | resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7" 1235 | integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== 1236 | 1237 | util-deprecate@^1.0.1, util-deprecate@~1.0.1: 1238 | version "1.0.2" 1239 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1240 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== 1241 | 1242 | webidl-conversions@^3.0.0: 1243 | version "3.0.1" 1244 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" 1245 | integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== 1246 | 1247 | whatwg-url@^5.0.0: 1248 | version "5.0.0" 1249 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" 1250 | integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== 1251 | dependencies: 1252 | tr46 "~0.0.3" 1253 | webidl-conversions "^3.0.0" 1254 | 1255 | which@^2.0.1: 1256 | version "2.0.2" 1257 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1258 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1259 | dependencies: 1260 | isexe "^2.0.0" 1261 | 1262 | wrap-ansi@^7.0.0: 1263 | version "7.0.0" 1264 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 1265 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 1266 | dependencies: 1267 | ansi-styles "^4.0.0" 1268 | string-width "^4.1.0" 1269 | strip-ansi "^6.0.0" 1270 | 1271 | wrappy@1: 1272 | version "1.0.2" 1273 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1274 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 1275 | 1276 | xml2js@^0.5.0: 1277 | version "0.5.0" 1278 | resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.5.0.tgz#d9440631fbb2ed800203fad106f2724f62c493b7" 1279 | integrity sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA== 1280 | dependencies: 1281 | sax ">=0.6.0" 1282 | xmlbuilder "~11.0.0" 1283 | 1284 | xmlbuilder@~11.0.0: 1285 | version "11.0.1" 1286 | resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" 1287 | integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== 1288 | 1289 | y18n@^5.0.5: 1290 | version "5.0.8" 1291 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 1292 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 1293 | 1294 | yallist@^4.0.0: 1295 | version "4.0.0" 1296 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 1297 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 1298 | 1299 | yargs-parser@^21.1.1: 1300 | version "21.1.1" 1301 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" 1302 | integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== 1303 | 1304 | yargs@^17.0.0: 1305 | version "17.6.2" 1306 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.2.tgz#2e23f2944e976339a1ee00f18c77fedee8332541" 1307 | integrity sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw== 1308 | dependencies: 1309 | cliui "^8.0.1" 1310 | escalade "^3.1.1" 1311 | get-caller-file "^2.0.5" 1312 | require-directory "^2.1.1" 1313 | string-width "^4.2.3" 1314 | y18n "^5.0.5" 1315 | yargs-parser "^21.1.1" 1316 | 1317 | yauzl@^2.3.1, yauzl@^2.9.2: 1318 | version "2.10.0" 1319 | resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" 1320 | integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== 1321 | dependencies: 1322 | buffer-crc32 "~0.2.3" 1323 | fd-slicer "~1.1.0" 1324 | 1325 | yazl@^2.2.2: 1326 | version "2.5.1" 1327 | resolved "https://registry.yarnpkg.com/yazl/-/yazl-2.5.1.tgz#a3d65d3dd659a5b0937850e8609f22fffa2b5c35" 1328 | integrity sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw== 1329 | dependencies: 1330 | buffer-crc32 "~0.2.3" 1331 | 1332 | zip-stream@^2.1.2: 1333 | version "2.1.3" 1334 | resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-2.1.3.tgz#26cc4bdb93641a8590dd07112e1f77af1758865b" 1335 | integrity sha512-EkXc2JGcKhO5N5aZ7TmuNo45budRaFGHOmz24wtJR7znbNqDPmdZtUauKX6et8KAVseAMBOyWJqEpXcHTBsh7Q== 1336 | dependencies: 1337 | archiver-utils "^2.1.0" 1338 | compress-commons "^2.1.1" 1339 | readable-stream "^3.4.0" 1340 | --------------------------------------------------------------------------------