├── .github └── workflows │ └── release.yml ├── .gitignore ├── LICENSE ├── action.yml ├── dist ├── index.js ├── licenses.txt └── release.config.js ├── package.json ├── readme.md ├── release.config.js ├── src ├── index.ts └── npm-config.ts ├── tsconfig.json └── yarn.lock /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | on: 2 | push: 3 | branches: 4 | - main 5 | 6 | jobs: 7 | release: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/checkout@v2 11 | - uses: actions/setup-node@v1 12 | with: 13 | node-version: 14 14 | - run: yarn 15 | - uses: ./ 16 | with: 17 | github_token: ${{ secrets.GITHUB_TOKEN }} 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | *.log 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 plutot.cool 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /action.yml: -------------------------------------------------------------------------------- 1 | name: Release Action 2 | description: GitHub Action to automatically release packages using lerna or semantic-release 3 | author: juliendargelos 4 | inputs: 5 | github_token: 6 | description: GitHub Token used to create the release on GitHub and publish on GitHub registry. 7 | required: true 8 | npm_token: 9 | description: NPM token with publish permission. If not provided, publishing to npm registry will be skipped. 10 | required: false 11 | publish: 12 | description: Enable or disable publishing to package registries. When set to false, releases are only created on GitHub. 13 | default: true 14 | required: false 15 | push: 16 | description: Enable or disable pushing changes made by the action. 17 | default: true 18 | required: false 19 | name: 20 | description: User name to use when pushing to GitHub. 21 | default: github-actions[bot] 22 | required: false 23 | email: 24 | description: Email to use when pushing to GitHub. 25 | default: github-actions[bot]@users.noreply.github.com 26 | required: false 27 | message: 28 | description: Commit message to use when bumping package.json. 29 | default: 'ci(release): %s' 30 | required: false 31 | runs: 32 | using: node12 33 | main: dist/index.js 34 | branding: 35 | icon: package 36 | color: purple 37 | -------------------------------------------------------------------------------- /dist/licenses.txt: -------------------------------------------------------------------------------- 1 | @actions/core 2 | MIT 3 | The MIT License (MIT) 4 | 5 | Copyright 2019 GitHub 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 8 | 9 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 10 | 11 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 12 | 13 | @actions/exec 14 | MIT 15 | 16 | @actions/github 17 | MIT 18 | 19 | @actions/http-client 20 | MIT 21 | Actions Http Client for Node.js 22 | 23 | Copyright (c) GitHub, Inc. 24 | 25 | All rights reserved. 26 | 27 | MIT License 28 | 29 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 30 | associated documentation files (the "Software"), to deal in the Software without restriction, 31 | including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, 32 | and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, 33 | subject to the following conditions: 34 | 35 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 36 | 37 | THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT 38 | LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN 39 | NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 40 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 41 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 42 | 43 | 44 | @actions/io 45 | MIT 46 | 47 | @octokit/auth-token 48 | MIT 49 | The MIT License 50 | 51 | Copyright (c) 2019 Octokit contributors 52 | 53 | Permission is hereby granted, free of charge, to any person obtaining a copy 54 | of this software and associated documentation files (the "Software"), to deal 55 | in the Software without restriction, including without limitation the rights 56 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 57 | copies of the Software, and to permit persons to whom the Software is 58 | furnished to do so, subject to the following conditions: 59 | 60 | The above copyright notice and this permission notice shall be included in 61 | all copies or substantial portions of the Software. 62 | 63 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 64 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 65 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 66 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 67 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 68 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 69 | THE SOFTWARE. 70 | 71 | 72 | @octokit/core 73 | MIT 74 | The MIT License 75 | 76 | Copyright (c) 2019 Octokit contributors 77 | 78 | Permission is hereby granted, free of charge, to any person obtaining a copy 79 | of this software and associated documentation files (the "Software"), to deal 80 | in the Software without restriction, including without limitation the rights 81 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 82 | copies of the Software, and to permit persons to whom the Software is 83 | furnished to do so, subject to the following conditions: 84 | 85 | The above copyright notice and this permission notice shall be included in 86 | all copies or substantial portions of the Software. 87 | 88 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 89 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 90 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 91 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 92 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 93 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 94 | THE SOFTWARE. 95 | 96 | 97 | @octokit/endpoint 98 | MIT 99 | The MIT License 100 | 101 | Copyright (c) 2018 Octokit contributors 102 | 103 | Permission is hereby granted, free of charge, to any person obtaining a copy 104 | of this software and associated documentation files (the "Software"), to deal 105 | in the Software without restriction, including without limitation the rights 106 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 107 | copies of the Software, and to permit persons to whom the Software is 108 | furnished to do so, subject to the following conditions: 109 | 110 | The above copyright notice and this permission notice shall be included in 111 | all copies or substantial portions of the Software. 112 | 113 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 114 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 115 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 116 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 117 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 118 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 119 | THE SOFTWARE. 120 | 121 | 122 | @octokit/graphql 123 | MIT 124 | The MIT License 125 | 126 | Copyright (c) 2018 Octokit contributors 127 | 128 | Permission is hereby granted, free of charge, to any person obtaining a copy 129 | of this software and associated documentation files (the "Software"), to deal 130 | in the Software without restriction, including without limitation the rights 131 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 132 | copies of the Software, and to permit persons to whom the Software is 133 | furnished to do so, subject to the following conditions: 134 | 135 | The above copyright notice and this permission notice shall be included in 136 | all copies or substantial portions of the Software. 137 | 138 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 139 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 140 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 141 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 142 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 143 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 144 | THE SOFTWARE. 145 | 146 | 147 | @octokit/plugin-paginate-rest 148 | MIT 149 | MIT License Copyright (c) 2019 Octokit contributors 150 | 151 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 152 | 153 | The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. 154 | 155 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 156 | 157 | 158 | @octokit/plugin-rest-endpoint-methods 159 | MIT 160 | MIT License Copyright (c) 2019 Octokit contributors 161 | 162 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 163 | 164 | The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. 165 | 166 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 167 | 168 | 169 | @octokit/request 170 | MIT 171 | The MIT License 172 | 173 | Copyright (c) 2018 Octokit contributors 174 | 175 | Permission is hereby granted, free of charge, to any person obtaining a copy 176 | of this software and associated documentation files (the "Software"), to deal 177 | in the Software without restriction, including without limitation the rights 178 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 179 | copies of the Software, and to permit persons to whom the Software is 180 | furnished to do so, subject to the following conditions: 181 | 182 | The above copyright notice and this permission notice shall be included in 183 | all copies or substantial portions of the Software. 184 | 185 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 186 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 187 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 188 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 189 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 190 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 191 | THE SOFTWARE. 192 | 193 | 194 | @octokit/request-error 195 | MIT 196 | The MIT License 197 | 198 | Copyright (c) 2019 Octokit contributors 199 | 200 | Permission is hereby granted, free of charge, to any person obtaining a copy 201 | of this software and associated documentation files (the "Software"), to deal 202 | in the Software without restriction, including without limitation the rights 203 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 204 | copies of the Software, and to permit persons to whom the Software is 205 | furnished to do so, subject to the following conditions: 206 | 207 | The above copyright notice and this permission notice shall be included in 208 | all copies or substantial portions of the Software. 209 | 210 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 211 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 212 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 213 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 214 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 215 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 216 | THE SOFTWARE. 217 | 218 | 219 | @vercel/ncc 220 | MIT 221 | Copyright 2018 ZEIT, Inc. 222 | 223 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 224 | 225 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 226 | 227 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 228 | 229 | before-after-hook 230 | Apache-2.0 231 | Apache License 232 | Version 2.0, January 2004 233 | http://www.apache.org/licenses/ 234 | 235 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 236 | 237 | 1. Definitions. 238 | 239 | "License" shall mean the terms and conditions for use, reproduction, 240 | and distribution as defined by Sections 1 through 9 of this document. 241 | 242 | "Licensor" shall mean the copyright owner or entity authorized by 243 | the copyright owner that is granting the License. 244 | 245 | "Legal Entity" shall mean the union of the acting entity and all 246 | other entities that control, are controlled by, or are under common 247 | control with that entity. For the purposes of this definition, 248 | "control" means (i) the power, direct or indirect, to cause the 249 | direction or management of such entity, whether by contract or 250 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 251 | outstanding shares, or (iii) beneficial ownership of such entity. 252 | 253 | "You" (or "Your") shall mean an individual or Legal Entity 254 | exercising permissions granted by this License. 255 | 256 | "Source" form shall mean the preferred form for making modifications, 257 | including but not limited to software source code, documentation 258 | source, and configuration files. 259 | 260 | "Object" form shall mean any form resulting from mechanical 261 | transformation or translation of a Source form, including but 262 | not limited to compiled object code, generated documentation, 263 | and conversions to other media types. 264 | 265 | "Work" shall mean the work of authorship, whether in Source or 266 | Object form, made available under the License, as indicated by a 267 | copyright notice that is included in or attached to the work 268 | (an example is provided in the Appendix below). 269 | 270 | "Derivative Works" shall mean any work, whether in Source or Object 271 | form, that is based on (or derived from) the Work and for which the 272 | editorial revisions, annotations, elaborations, or other modifications 273 | represent, as a whole, an original work of authorship. For the purposes 274 | of this License, Derivative Works shall not include works that remain 275 | separable from, or merely link (or bind by name) to the interfaces of, 276 | the Work and Derivative Works thereof. 277 | 278 | "Contribution" shall mean any work of authorship, including 279 | the original version of the Work and any modifications or additions 280 | to that Work or Derivative Works thereof, that is intentionally 281 | submitted to Licensor for inclusion in the Work by the copyright owner 282 | or by an individual or Legal Entity authorized to submit on behalf of 283 | the copyright owner. For the purposes of this definition, "submitted" 284 | means any form of electronic, verbal, or written communication sent 285 | to the Licensor or its representatives, including but not limited to 286 | communication on electronic mailing lists, source code control systems, 287 | and issue tracking systems that are managed by, or on behalf of, the 288 | Licensor for the purpose of discussing and improving the Work, but 289 | excluding communication that is conspicuously marked or otherwise 290 | designated in writing by the copyright owner as "Not a Contribution." 291 | 292 | "Contributor" shall mean Licensor and any individual or Legal Entity 293 | on behalf of whom a Contribution has been received by Licensor and 294 | subsequently incorporated within the Work. 295 | 296 | 2. Grant of Copyright License. Subject to the terms and conditions of 297 | this License, each Contributor hereby grants to You a perpetual, 298 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 299 | copyright license to reproduce, prepare Derivative Works of, 300 | publicly display, publicly perform, sublicense, and distribute the 301 | Work and such Derivative Works in Source or Object form. 302 | 303 | 3. Grant of Patent License. Subject to the terms and conditions of 304 | this License, each Contributor hereby grants to You a perpetual, 305 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 306 | (except as stated in this section) patent license to make, have made, 307 | use, offer to sell, sell, import, and otherwise transfer the Work, 308 | where such license applies only to those patent claims licensable 309 | by such Contributor that are necessarily infringed by their 310 | Contribution(s) alone or by combination of their Contribution(s) 311 | with the Work to which such Contribution(s) was submitted. If You 312 | institute patent litigation against any entity (including a 313 | cross-claim or counterclaim in a lawsuit) alleging that the Work 314 | or a Contribution incorporated within the Work constitutes direct 315 | or contributory patent infringement, then any patent licenses 316 | granted to You under this License for that Work shall terminate 317 | as of the date such litigation is filed. 318 | 319 | 4. Redistribution. You may reproduce and distribute copies of the 320 | Work or Derivative Works thereof in any medium, with or without 321 | modifications, and in Source or Object form, provided that You 322 | meet the following conditions: 323 | 324 | (a) You must give any other recipients of the Work or 325 | Derivative Works a copy of this License; and 326 | 327 | (b) You must cause any modified files to carry prominent notices 328 | stating that You changed the files; and 329 | 330 | (c) You must retain, in the Source form of any Derivative Works 331 | that You distribute, all copyright, patent, trademark, and 332 | attribution notices from the Source form of the Work, 333 | excluding those notices that do not pertain to any part of 334 | the Derivative Works; and 335 | 336 | (d) If the Work includes a "NOTICE" text file as part of its 337 | distribution, then any Derivative Works that You distribute must 338 | include a readable copy of the attribution notices contained 339 | within such NOTICE file, excluding those notices that do not 340 | pertain to any part of the Derivative Works, in at least one 341 | of the following places: within a NOTICE text file distributed 342 | as part of the Derivative Works; within the Source form or 343 | documentation, if provided along with the Derivative Works; or, 344 | within a display generated by the Derivative Works, if and 345 | wherever such third-party notices normally appear. The contents 346 | of the NOTICE file are for informational purposes only and 347 | do not modify the License. You may add Your own attribution 348 | notices within Derivative Works that You distribute, alongside 349 | or as an addendum to the NOTICE text from the Work, provided 350 | that such additional attribution notices cannot be construed 351 | as modifying the License. 352 | 353 | You may add Your own copyright statement to Your modifications and 354 | may provide additional or different license terms and conditions 355 | for use, reproduction, or distribution of Your modifications, or 356 | for any such Derivative Works as a whole, provided Your use, 357 | reproduction, and distribution of the Work otherwise complies with 358 | the conditions stated in this License. 359 | 360 | 5. Submission of Contributions. Unless You explicitly state otherwise, 361 | any Contribution intentionally submitted for inclusion in the Work 362 | by You to the Licensor shall be under the terms and conditions of 363 | this License, without any additional terms or conditions. 364 | Notwithstanding the above, nothing herein shall supersede or modify 365 | the terms of any separate license agreement you may have executed 366 | with Licensor regarding such Contributions. 367 | 368 | 6. Trademarks. This License does not grant permission to use the trade 369 | names, trademarks, service marks, or product names of the Licensor, 370 | except as required for reasonable and customary use in describing the 371 | origin of the Work and reproducing the content of the NOTICE file. 372 | 373 | 7. Disclaimer of Warranty. Unless required by applicable law or 374 | agreed to in writing, Licensor provides the Work (and each 375 | Contributor provides its Contributions) on an "AS IS" BASIS, 376 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 377 | implied, including, without limitation, any warranties or conditions 378 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 379 | PARTICULAR PURPOSE. You are solely responsible for determining the 380 | appropriateness of using or redistributing the Work and assume any 381 | risks associated with Your exercise of permissions under this License. 382 | 383 | 8. Limitation of Liability. In no event and under no legal theory, 384 | whether in tort (including negligence), contract, or otherwise, 385 | unless required by applicable law (such as deliberate and grossly 386 | negligent acts) or agreed to in writing, shall any Contributor be 387 | liable to You for damages, including any direct, indirect, special, 388 | incidental, or consequential damages of any character arising as a 389 | result of this License or out of the use or inability to use the 390 | Work (including but not limited to damages for loss of goodwill, 391 | work stoppage, computer failure or malfunction, or any and all 392 | other commercial damages or losses), even if such Contributor 393 | has been advised of the possibility of such damages. 394 | 395 | 9. Accepting Warranty or Additional Liability. While redistributing 396 | the Work or Derivative Works thereof, You may choose to offer, 397 | and charge a fee for, acceptance of support, warranty, indemnity, 398 | or other liability obligations and/or rights consistent with this 399 | License. However, in accepting such obligations, You may act only 400 | on Your own behalf and on Your sole responsibility, not on behalf 401 | of any other Contributor, and only if You agree to indemnify, 402 | defend, and hold each Contributor harmless for any liability 403 | incurred by, or claims asserted against, such Contributor by reason 404 | of your accepting any such warranty or additional liability. 405 | 406 | END OF TERMS AND CONDITIONS 407 | 408 | APPENDIX: How to apply the Apache License to your work. 409 | 410 | To apply the Apache License to your work, attach the following 411 | boilerplate notice, with the fields enclosed by brackets "{}" 412 | replaced with your own identifying information. (Don't include 413 | the brackets!) The text should be enclosed in the appropriate 414 | comment syntax for the file format. We also recommend that a 415 | file or class name and description of purpose be included on the 416 | same "printed page" as the copyright notice for easier 417 | identification within third-party archives. 418 | 419 | Copyright 2018 Gregor Martynus and other contributors. 420 | 421 | Licensed under the Apache License, Version 2.0 (the "License"); 422 | you may not use this file except in compliance with the License. 423 | You may obtain a copy of the License at 424 | 425 | http://www.apache.org/licenses/LICENSE-2.0 426 | 427 | Unless required by applicable law or agreed to in writing, software 428 | distributed under the License is distributed on an "AS IS" BASIS, 429 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 430 | See the License for the specific language governing permissions and 431 | limitations under the License. 432 | 433 | 434 | deprecation 435 | ISC 436 | The ISC License 437 | 438 | Copyright (c) Gregor Martynus and contributors 439 | 440 | Permission to use, copy, modify, and/or distribute this software for any 441 | purpose with or without fee is hereby granted, provided that the above 442 | copyright notice and this permission notice appear in all copies. 443 | 444 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 445 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 446 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 447 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 448 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 449 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR 450 | IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 451 | 452 | 453 | is-plain-object 454 | MIT 455 | The MIT License (MIT) 456 | 457 | Copyright (c) 2014-2017, Jon Schlinkert. 458 | 459 | Permission is hereby granted, free of charge, to any person obtaining a copy 460 | of this software and associated documentation files (the "Software"), to deal 461 | in the Software without restriction, including without limitation the rights 462 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 463 | copies of the Software, and to permit persons to whom the Software is 464 | furnished to do so, subject to the following conditions: 465 | 466 | The above copyright notice and this permission notice shall be included in 467 | all copies or substantial portions of the Software. 468 | 469 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 470 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 471 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 472 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 473 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 474 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 475 | THE SOFTWARE. 476 | 477 | 478 | node-fetch 479 | MIT 480 | The MIT License (MIT) 481 | 482 | Copyright (c) 2016 David Frank 483 | 484 | Permission is hereby granted, free of charge, to any person obtaining a copy 485 | of this software and associated documentation files (the "Software"), to deal 486 | in the Software without restriction, including without limitation the rights 487 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 488 | copies of the Software, and to permit persons to whom the Software is 489 | furnished to do so, subject to the following conditions: 490 | 491 | The above copyright notice and this permission notice shall be included in all 492 | copies or substantial portions of the Software. 493 | 494 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 495 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 496 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 497 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 498 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 499 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 500 | SOFTWARE. 501 | 502 | 503 | 504 | once 505 | ISC 506 | The ISC License 507 | 508 | Copyright (c) Isaac Z. Schlueter and Contributors 509 | 510 | Permission to use, copy, modify, and/or distribute this software for any 511 | purpose with or without fee is hereby granted, provided that the above 512 | copyright notice and this permission notice appear in all copies. 513 | 514 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 515 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 516 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 517 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 518 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 519 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR 520 | IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 521 | 522 | 523 | tunnel 524 | MIT 525 | The MIT License (MIT) 526 | 527 | Copyright (c) 2012 Koichi Kobayashi 528 | 529 | Permission is hereby granted, free of charge, to any person obtaining a copy 530 | of this software and associated documentation files (the "Software"), to deal 531 | in the Software without restriction, including without limitation the rights 532 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 533 | copies of the Software, and to permit persons to whom the Software is 534 | furnished to do so, subject to the following conditions: 535 | 536 | The above copyright notice and this permission notice shall be included in 537 | all copies or substantial portions of the Software. 538 | 539 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 540 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 541 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 542 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 543 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 544 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 545 | THE SOFTWARE. 546 | 547 | 548 | universal-user-agent 549 | ISC 550 | # [ISC License](https://spdx.org/licenses/ISC) 551 | 552 | Copyright (c) 2018, Gregor Martynus (https://github.com/gr2m) 553 | 554 | Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. 555 | 556 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 557 | 558 | 559 | wrappy 560 | ISC 561 | The ISC License 562 | 563 | Copyright (c) Isaac Z. Schlueter and Contributors 564 | 565 | Permission to use, copy, modify, and/or distribute this software for any 566 | purpose with or without fee is hereby granted, provided that the above 567 | copyright notice and this permission notice appear in all copies. 568 | 569 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 570 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 571 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 572 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 573 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 574 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR 575 | IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 576 | -------------------------------------------------------------------------------- /dist/release.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: [ 3 | '@semantic-release/commit-analyzer', 4 | '@semantic-release/release-notes-generator', 5 | ['@semantic-release/npm', { npmPublish: false }], 6 | '@semantic-release/github' 7 | ], 8 | branches: [ 9 | '+([0-9])?(.{+([0-9]),x}).x', 10 | 'main', 11 | 'next', 12 | 'next-major', 13 | { 14 | name: 'beta', 15 | prerelease: true 16 | }, 17 | { 18 | name: 'alpha', 19 | prerelease: true 20 | } 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "name": "@plutocool/release", 4 | "version": "0.0.0", 5 | "description": "GitHub Action to automatically release packages using lerna or semantic-release", 6 | "author": "Julien Dargelos ", 7 | "license": "MIT", 8 | "repository": "plutotcool/release", 9 | "bugs": "https://github.com/plutotcool/release/issues", 10 | "homepage": "https://github.com/plutotcool/release#readme", 11 | "main": "dist/index.js", 12 | "scripts": { 13 | "build": "ncc build src/index.ts --license licenses.txt", 14 | "prebuild": "rm -Rf dist", 15 | "postbuild": "git add dist" 16 | }, 17 | "pre-commit": "build", 18 | "keywords": [ 19 | "GitHub Actions", 20 | "publish", 21 | "release", 22 | "npm", 23 | "lerna", 24 | "semantic-release" 25 | ], 26 | "dependencies": { 27 | "@actions/core": "^1.2.6", 28 | "@actions/exec": "^1.0.4", 29 | "@actions/github": "^4.0.0" 30 | }, 31 | "devDependencies": { 32 | "@vercel/ncc": "^0.25.1", 33 | "pre-commit": "^1.2.2", 34 | "typescript": "^4.1.2" 35 | }, 36 | "engines": { 37 | "node": ">=14.17" 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # Release Action 2 | 3 | > GitHub Action to automatically release packages using lerna or semantic-release. 4 | 5 | - Automatically bump packages version using [semantic-release](https://github.com/semantic-release/semantic-release) (or [lerna](https://github.com/lerna/lerna) which also relies on semantic-release) 6 | - Create releases on GitHub 7 | - Publish to GitHub and NPM registries 8 | 9 | Publishing on package registries is skipped if there is not any `package.json` or if its `private` field is set to true. 10 | 11 | Publishing on GitHub registry is skipped if the package name is not [scoped with the GitHub owner name](https://docs.github.com/en/free-pro-team@latest/packages/using-github-packages-with-your-projects-ecosystem/configuring-npm-for-use-with-github-packages#publishing-a-package). 12 | 13 | Publishing on NPM registry is skipped if no [NPM token](https://docs.npmjs.com/about-access-tokens) is provided. 14 | 15 | ## Usage 16 | 17 | In `.github/workflows/release.yml`: 18 | 19 | ```yaml 20 | on: 21 | push: 22 | branches: 23 | - main 24 | 25 | jobs: 26 | release: 27 | runs-on: ubuntu-latest 28 | steps: 29 | - uses: actions/checkout@v2 30 | - uses: actions/setup-node@v1 31 | with: 32 | node-version: 14 33 | - run: yarn 34 | - run: yarn build 35 | - uses: plutotcool/release@v1 36 | with: 37 | github_token: ${{ secrets.GITHUB_TOKEN }} 38 | npm_token: ${{ secrets.NPM_TOKEN }} 39 | ``` 40 | 41 | ## Inputs 42 | 43 | ### `github_token` 44 | 45 | `string` *(required)* 46 | 47 | [GitHub Token](https://docs.github.com/en/free-pro-team@latest/actions/reference/authentication-in-a-workflow#about-the-github_token-secret) used to create the release on GitHub and publish on GitHub registry. 48 | 49 | ### `npm_token` 50 | 51 | `string` *(optional)* 52 | 53 | [NPM token](https://docs.npmjs.com/about-access-tokens) with publish permission. If not provided, publishing to npm registry will be skipped. 54 | 55 | ### `publish` 56 | 57 | `boolean` *(optional, default `true`)* 58 | 59 | Enable or disable publishing to package registries. When set to false, only releases are created on GitHub. 60 | 61 | ### `push` 62 | 63 | `boolean` *(optional, default `true`)* 64 | 65 | Enable or disable pushing changes made by the action. 66 | 67 | ## `name` 68 | 69 | `string` *(optional, default: `'github-actions[bot]'`)* 70 | 71 | User name to use when pushing to GitHub. 72 | 73 | ## `email` 74 | 75 | `string` *(optional, default: `'github-actions[bot]@users.noreply.github.com'`)* 76 | 77 | Email to use when pushing to GitHub. 78 | 79 | ## `message` 80 | 81 | `string` *(optional, default: `'ci: release'`)* 82 | 83 | Commit message to use when bumping package.json. 84 | -------------------------------------------------------------------------------- /release.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: [ 3 | '@semantic-release/commit-analyzer', 4 | '@semantic-release/release-notes-generator', 5 | ['@semantic-release/npm', { npmPublish: false }], 6 | '@semantic-release/github' 7 | ], 8 | branches: [ 9 | '+([0-9])?(.{+([0-9]),x}).x', 10 | 'main', 11 | 'next', 12 | 'next-major', 13 | { 14 | name: 'beta', 15 | prerelease: true 16 | }, 17 | { 18 | name: 'alpha', 19 | prerelease: true 20 | } 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import * as core from '@actions/core' 2 | import * as exec from '@actions/exec' 3 | import * as github from '@actions/github' 4 | import { promises as fs } from 'fs' 5 | import { npmConfig } from './npm-config' 6 | 7 | (async () => { 8 | try { 9 | const owner: string = github.context.repo.owner 10 | const ownerScope: string = `@${owner}` 11 | const npmToken: string = core.getInput('npm_token') 12 | const githubToken: string = core.getInput('github_token', { required: true }) 13 | const publish: boolean = core.getInput('publish') !== 'false' 14 | const push: boolean = core.getInput('push') !== 'false' 15 | const name: string = core.getInput('name') 16 | const email: string = core.getInput('email') 17 | const message: string = core.getInput('message') 18 | 19 | let publishToGithub: boolean 20 | let publishToNPM: boolean 21 | let privatePackage: boolean 22 | let scope: string 23 | let cli: string 24 | let cliPath: string 25 | let release: ( 26 | path: string, 27 | release: boolean, 28 | publish: boolean, 29 | message: string, 30 | env?: { [variable: string]: string } 31 | ) => Promise 32 | 33 | try { 34 | await fs.access('lerna.json') 35 | cli = 'lerna' 36 | release = lernaRelease 37 | 38 | core.info( 39 | 'Lerna detected, releasing using lerna' 40 | ) 41 | } catch(_) { 42 | cli = 'semantic-release' 43 | release = semanticRelease 44 | 45 | core.info( 46 | 'Lerna not detected, releasing using semantic-release' 47 | ) 48 | } 49 | 50 | try { 51 | const pkg = JSON.parse((await fs.readFile('package.json')).toString()) 52 | privatePackage = cli !== 'lerna' && pkg.private 53 | scope = pkg.name.slice(0, pkg.name.indexOf('/')) 54 | publishToGithub = publish && !privatePackage && scope === ownerScope 55 | publishToNPM = publish && !privatePackage && !!npmToken 56 | } catch (_) { 57 | privatePackage = true 58 | scope = ownerScope 59 | publishToGithub = false 60 | publishToNPM = false 61 | } 62 | 63 | if (!publish) { 64 | core.info( 65 | 'Publishing disabled, skipping publishing to package registries' 66 | ) 67 | } else if (privatePackage) { 68 | core.info( 69 | 'Private package detected, skipping publishing to package registries' 70 | ) 71 | } else { 72 | scope !== ownerScope && core.warning( 73 | `Package not scoped with ${ownerScope}, skipping publishing to GitHub registry` 74 | ) 75 | 76 | !npmToken && core.warning( 77 | 'NPM token not provided, skipping publishing to NPM registry' 78 | ) 79 | } 80 | 81 | try { 82 | await fs.access(`node_modules/${cli}/package.json`) 83 | } catch (_) { 84 | core.info( 85 | `Installing ${cli}...` 86 | ) 87 | 88 | await exec.exec('npm', [ 89 | 'install', 90 | cli, 91 | '--no-save', 92 | '--no-package-lock' 93 | ]) 94 | 95 | core.info( 96 | `Installed ${cli}` 97 | ) 98 | } 99 | 100 | cliPath = `node_modules/${cli}/${JSON 101 | .parse((await fs.readFile(`node_modules/${cli}/package.json`)).toString()) 102 | .bin[cli] 103 | }` 104 | 105 | await exec.exec('git', ['config', '--global', 'user.name', name]) 106 | await exec.exec('git', ['config', '--global', 'user.email', email]) 107 | 108 | core.info( 109 | `Creating release on GitHub${publishToGithub ? ' and publishing to GitHub registry' : ''}...` 110 | ) 111 | 112 | await release(cliPath, true, publishToGithub, message, { 113 | ...process.env, 114 | NPM_CONFIG_REGISTRY: `https://npm.pkg.github.com`, 115 | NPM_TOKEN: githubToken, 116 | GITHUB_TOKEN: githubToken 117 | }) 118 | 119 | core.info( 120 | 'Release available on GitHub' 121 | ) 122 | 123 | publishToGithub && core.info( 124 | 'Package available on GitHub registry' 125 | ) 126 | 127 | publishToNPM && core.info( 128 | 'Publishing to NPM registry...' 129 | ) 130 | 131 | await release(cliPath, false, publishToNPM, message, { 132 | ...process.env, 133 | NPM_CONFIG_REGISTRY: 'https://registry.npmjs.org', 134 | NPM_TOKEN: npmToken, 135 | GITHUB_TOKEN: githubToken 136 | }) 137 | 138 | publishToNPM && core.info( 139 | 'Package available on NPM registry' 140 | ) 141 | 142 | if (push) { 143 | core.info( 144 | 'Pushing changes to GitHub repository...' 145 | ) 146 | 147 | await exec.exec('git', ['push']) 148 | 149 | core.info( 150 | 'GitHub repository up to date' 151 | ) 152 | } 153 | } catch (error) { 154 | core.setFailed(error.message) 155 | } 156 | })() 157 | 158 | async function lernaRelease( 159 | path: string, 160 | release: boolean, 161 | publish: boolean, 162 | message: string, 163 | env: { [variable: string]: string } = {} 164 | ): Promise { 165 | if (release) { 166 | await exec.exec('node', [ 167 | path, 168 | 'version', 169 | '--yes', 170 | '--conventional-commits', 171 | '--conventional-graduate' 172 | ], { env }) 173 | } 174 | 175 | if (publish) { 176 | const npmEnv = await npmConfig( 177 | env.NPM_CONFIG_REGISTRY, 178 | env.NPM_TOKEN, 179 | message 180 | ) 181 | 182 | await exec.exec('node', [ 183 | path, 184 | 'publish', 185 | 'from-package', 186 | '--yes', 187 | '--registry', 188 | env.NPM_CONFIG_REGISTRY 189 | ], { 190 | env: { ...env, ...npmEnv } 191 | }) 192 | } 193 | } 194 | 195 | async function semanticRelease( 196 | path: string, 197 | release: boolean, 198 | publish: boolean, 199 | message: string, 200 | env: { [variable: string]: string } = {} 201 | ): Promise { 202 | if (release) { 203 | await exec.exec('node', [ 204 | path, 205 | '--no-ci', 206 | '--extends', 207 | `${__dirname}/../release.config.js` 208 | ], { env }) 209 | } 210 | 211 | if (publish) { 212 | const npmEnv = await npmConfig( 213 | env.NPM_CONFIG_REGISTRY, 214 | env.NPM_TOKEN, 215 | message 216 | ) 217 | 218 | await exec.exec('yarn', [ 219 | 'publish', 220 | '--non-interactive', 221 | '--no-git-tag-version', 222 | '--access', 'public' 223 | ], { env: { ...env, ...npmEnv } }) 224 | } 225 | } 226 | -------------------------------------------------------------------------------- /src/npm-config.ts: -------------------------------------------------------------------------------- 1 | import * as core from '@actions/core' 2 | import path from 'path' 3 | import { promises as fs } from 'fs' 4 | 5 | const npmrc = path.resolve( 6 | process.env['RUNNER_TEMP'] || process.cwd(), 7 | '.npmrc' 8 | ) 9 | 10 | export async function npmConfig( 11 | registryUrl: string, 12 | token: string, 13 | message: string 14 | ): Promise { 15 | if (!registryUrl.endsWith('/')) { 16 | registryUrl += '/' 17 | } 18 | 19 | core.info(`Setup NPM registry URL: ${registryUrl} on ${npmrc}`) 20 | 21 | await fs.writeFile(npmrc, ( 22 | `${registryUrl.replace(/(^\w+:|^)/, '')}:_authToken=\${NODE_AUTH_TOKEN}\n` + 23 | `message=${message}\n` 24 | ), 'utf-8') 25 | 26 | return { 27 | NPM_CONFIG_USERCONFIG: npmrc, 28 | NODE_AUTH_TOKEN: token 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "esnext", 4 | "baseUrl": ".", 5 | "lib": ["esnext"], 6 | "moduleResolution": "node", 7 | "esModuleInterop": true, 8 | "noImplicitAny": true, 9 | "noUnusedLocals": true, 10 | "noUnusedParameters": true, 11 | "allowSyntheticDefaultImports": true, 12 | "forceConsistentCasingInFileNames": true 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@actions/core@^1.2.6": 6 | version "1.2.6" 7 | resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.2.6.tgz#a78d49f41a4def18e88ce47c2cac615d5694bf09" 8 | integrity sha512-ZQYitnqiyBc3D+k7LsgSBmMDVkOVidaagDG7j3fOym77jNunWRuYx7VSHa9GNfFZh+zh61xsCjRj4JxMZlDqTA== 9 | 10 | "@actions/exec@^1.0.4": 11 | version "1.0.4" 12 | resolved "https://registry.yarnpkg.com/@actions/exec/-/exec-1.0.4.tgz#99d75310e62e59fc37d2ee6dcff6d4bffadd3a5d" 13 | integrity sha512-4DPChWow9yc9W3WqEbUj8Nr86xkpyE29ZzWjXucHItclLbEW6jr80Zx4nqv18QL6KK65+cifiQZXvnqgTV6oHw== 14 | dependencies: 15 | "@actions/io" "^1.0.1" 16 | 17 | "@actions/github@^4.0.0": 18 | version "4.0.0" 19 | resolved "https://registry.yarnpkg.com/@actions/github/-/github-4.0.0.tgz#d520483151a2bf5d2dc9cd0f20f9ac3a2e458816" 20 | integrity sha512-Ej/Y2E+VV6sR9X7pWL5F3VgEWrABaT292DRqRU6R4hnQjPtC/zD3nagxVdXWiRQvYDh8kHXo7IDmG42eJ/dOMA== 21 | dependencies: 22 | "@actions/http-client" "^1.0.8" 23 | "@octokit/core" "^3.0.0" 24 | "@octokit/plugin-paginate-rest" "^2.2.3" 25 | "@octokit/plugin-rest-endpoint-methods" "^4.0.0" 26 | 27 | "@actions/http-client@^1.0.8": 28 | version "1.0.9" 29 | resolved "https://registry.yarnpkg.com/@actions/http-client/-/http-client-1.0.9.tgz#af1947d020043dbc6a3b4c5918892095c30ffb52" 30 | integrity sha512-0O4SsJ7q+MK0ycvXPl2e6bMXV7dxAXOGjrXS1eTF9s2S401Tp6c/P3c3Joz04QefC1J6Gt942Wl2jbm3f4mLcg== 31 | dependencies: 32 | tunnel "0.0.6" 33 | 34 | "@actions/io@^1.0.1": 35 | version "1.0.2" 36 | resolved "https://registry.yarnpkg.com/@actions/io/-/io-1.0.2.tgz#2f614b6e69ce14d191180451eb38e6576a6e6b27" 37 | integrity sha512-J8KuFqVPr3p6U8W93DOXlXW6zFvrQAJANdS+vw0YhusLIq+bszW8zmK2Fh1C2kDPX8FMvwIl1OUcFgvJoXLbAg== 38 | 39 | "@octokit/auth-token@^2.4.0": 40 | version "2.4.3" 41 | resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.3.tgz#b868b5f2366533a7e62933eaa1181a8924228cc4" 42 | integrity sha512-fdGoOQ3kQJh+hrilc0Plg50xSfaCKOeYN9t6dpJKXN9BxhhfquL0OzoQXg3spLYymL5rm29uPeI3KEXRaZQ9zg== 43 | dependencies: 44 | "@octokit/types" "^5.0.0" 45 | 46 | "@octokit/core@^3.0.0": 47 | version "3.2.1" 48 | resolved "https://registry.yarnpkg.com/@octokit/core/-/core-3.2.1.tgz#9e04df3f4e7f825ac0559327490ce34299140af5" 49 | integrity sha512-XfFSDDwv6tclUenS0EmB6iA7u+4aOHBT1Lz4PtQNQQg3hBbNaR/+Uv5URU+egeIuuGAiMRiDyY92G4GBOWOqDA== 50 | dependencies: 51 | "@octokit/auth-token" "^2.4.0" 52 | "@octokit/graphql" "^4.3.1" 53 | "@octokit/request" "^5.4.0" 54 | "@octokit/types" "^5.0.0" 55 | before-after-hook "^2.1.0" 56 | universal-user-agent "^6.0.0" 57 | 58 | "@octokit/endpoint@^6.0.1": 59 | version "6.0.9" 60 | resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.9.tgz#c6a772e024202b1bd19ab69f90e0536a2598b13e" 61 | integrity sha512-3VPLbcCuqji4IFTclNUtGdp9v7g+nspWdiCUbK3+iPMjJCZ6LEhn1ts626bWLOn0GiDb6j+uqGvPpqLnY7pBgw== 62 | dependencies: 63 | "@octokit/types" "^5.0.0" 64 | is-plain-object "^5.0.0" 65 | universal-user-agent "^6.0.0" 66 | 67 | "@octokit/graphql@^4.3.1": 68 | version "4.5.7" 69 | resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.5.7.tgz#f4562dcd9e80ea94602068e85aefac19a88f8578" 70 | integrity sha512-Gk0AR+DcwIK/lK/GX+OQ99UqtenQhcbrhHHfOYlrCQe17ADnX3EKAOKRsAZ9qZvpi5MuwWm/Nm+9aO2kTDSdyA== 71 | dependencies: 72 | "@octokit/request" "^5.3.0" 73 | "@octokit/types" "^5.0.0" 74 | universal-user-agent "^6.0.0" 75 | 76 | "@octokit/plugin-paginate-rest@^2.2.3": 77 | version "2.6.0" 78 | resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.6.0.tgz#03416396e7a227b268c5b827365238f620a9c5c1" 79 | integrity sha512-o+O8c1PqsC5++BHXfMZabRRsBIVb34tXPWyQLyp2IXq5MmkxdipS7TXM4Y9ldL1PzY9CTrCsn/lzFFJGM3oRRA== 80 | dependencies: 81 | "@octokit/types" "^5.5.0" 82 | 83 | "@octokit/plugin-rest-endpoint-methods@^4.0.0": 84 | version "4.2.1" 85 | resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-4.2.1.tgz#8224833a45c3394836dc6e86f1e6c49269a2c350" 86 | integrity sha512-QyFr4Bv807Pt1DXZOC5a7L5aFdrwz71UHTYoHVajYV5hsqffWm8FUl9+O7nxRu5PDMtB/IKrhFqTmdBTK5cx+A== 87 | dependencies: 88 | "@octokit/types" "^5.5.0" 89 | deprecation "^2.3.1" 90 | 91 | "@octokit/request-error@^2.0.0": 92 | version "2.0.3" 93 | resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.0.3.tgz#b51b200052bf483f6fa56c9e7e3aa51ead36ecd8" 94 | integrity sha512-GgD5z8Btm301i2zfvJLk/mkhvGCdjQ7wT8xF9ov5noQY8WbKZDH9cOBqXzoeKd1mLr1xH2FwbtGso135zGBgTA== 95 | dependencies: 96 | "@octokit/types" "^5.0.1" 97 | deprecation "^2.0.0" 98 | once "^1.4.0" 99 | 100 | "@octokit/request@^5.3.0", "@octokit/request@^5.4.0": 101 | version "5.4.10" 102 | resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.4.10.tgz#402d2c53768bde12b99348329ba4129746aebb9c" 103 | integrity sha512-egA49HkqEORVGDZGav1mh+VD+7uLgOxtn5oODj6guJk0HCy+YBSYapFkSLFgeYj3Fr18ZULKGURkjyhkAChylw== 104 | dependencies: 105 | "@octokit/endpoint" "^6.0.1" 106 | "@octokit/request-error" "^2.0.0" 107 | "@octokit/types" "^5.0.0" 108 | deprecation "^2.0.0" 109 | is-plain-object "^5.0.0" 110 | node-fetch "^2.6.1" 111 | once "^1.4.0" 112 | universal-user-agent "^6.0.0" 113 | 114 | "@octokit/types@^5.0.0", "@octokit/types@^5.0.1", "@octokit/types@^5.5.0": 115 | version "5.5.0" 116 | resolved "https://registry.yarnpkg.com/@octokit/types/-/types-5.5.0.tgz#e5f06e8db21246ca102aa28444cdb13ae17a139b" 117 | integrity sha512-UZ1pErDue6bZNjYOotCNveTXArOMZQFG6hKJfOnGnulVCMcVVi7YIIuuR4WfBhjo7zgpmzn/BkPDnUXtNx+PcQ== 118 | dependencies: 119 | "@types/node" ">= 8" 120 | 121 | "@types/node@>= 8": 122 | version "14.14.9" 123 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.9.tgz#04afc9a25c6ff93da14deabd65dc44485b53c8d6" 124 | integrity sha512-JsoLXFppG62tWTklIoO4knA+oDTYsmqWxHRvd4lpmfQRNhX6osheUOWETP2jMoV/2bEHuMra8Pp3Dmo/stBFcw== 125 | 126 | "@vercel/ncc@^0.25.1": 127 | version "0.25.1" 128 | resolved "https://registry.yarnpkg.com/@vercel/ncc/-/ncc-0.25.1.tgz#a4aacdb508ac496fc0c63a3c3203d700a619cc0e" 129 | integrity sha512-dGecC5+1wLof1MQpey4+6i2KZv4Sfs6WfXkl9KfO32GED4ZPiKxRfvtGPjbjZv0IbqMl6CxtcV1RotXYfd5SSA== 130 | 131 | before-after-hook@^2.1.0: 132 | version "2.1.0" 133 | resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.1.0.tgz#b6c03487f44e24200dd30ca5e6a1979c5d2fb635" 134 | integrity sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A== 135 | 136 | buffer-from@^1.0.0: 137 | version "1.1.1" 138 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 139 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== 140 | 141 | concat-stream@^1.4.7: 142 | version "1.6.2" 143 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" 144 | integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== 145 | dependencies: 146 | buffer-from "^1.0.0" 147 | inherits "^2.0.3" 148 | readable-stream "^2.2.2" 149 | typedarray "^0.0.6" 150 | 151 | core-util-is@~1.0.0: 152 | version "1.0.2" 153 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 154 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 155 | 156 | cross-spawn@^5.0.1: 157 | version "5.1.0" 158 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" 159 | integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= 160 | dependencies: 161 | lru-cache "^4.0.1" 162 | shebang-command "^1.2.0" 163 | which "^1.2.9" 164 | 165 | deprecation@^2.0.0, deprecation@^2.3.1: 166 | version "2.3.1" 167 | resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" 168 | integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== 169 | 170 | inherits@^2.0.3, inherits@~2.0.3: 171 | version "2.0.4" 172 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 173 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 174 | 175 | is-plain-object@^5.0.0: 176 | version "5.0.0" 177 | resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" 178 | integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== 179 | 180 | isarray@~1.0.0: 181 | version "1.0.0" 182 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 183 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 184 | 185 | isexe@^2.0.0: 186 | version "2.0.0" 187 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 188 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 189 | 190 | lru-cache@^4.0.1: 191 | version "4.1.5" 192 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" 193 | integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== 194 | dependencies: 195 | pseudomap "^1.0.2" 196 | yallist "^2.1.2" 197 | 198 | node-fetch@^2.6.1: 199 | version "2.6.1" 200 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" 201 | integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== 202 | 203 | once@^1.4.0: 204 | version "1.4.0" 205 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 206 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 207 | dependencies: 208 | wrappy "1" 209 | 210 | os-shim@^0.1.2: 211 | version "0.1.3" 212 | resolved "https://registry.yarnpkg.com/os-shim/-/os-shim-0.1.3.tgz#6b62c3791cf7909ea35ed46e17658bb417cb3917" 213 | integrity sha1-a2LDeRz3kJ6jXtRuF2WLtBfLORc= 214 | 215 | pre-commit@^1.2.2: 216 | version "1.2.2" 217 | resolved "https://registry.yarnpkg.com/pre-commit/-/pre-commit-1.2.2.tgz#dbcee0ee9de7235e57f79c56d7ce94641a69eec6" 218 | integrity sha1-287g7p3nI15X95xW186UZBpp7sY= 219 | dependencies: 220 | cross-spawn "^5.0.1" 221 | spawn-sync "^1.0.15" 222 | which "1.2.x" 223 | 224 | process-nextick-args@~2.0.0: 225 | version "2.0.1" 226 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 227 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 228 | 229 | pseudomap@^1.0.2: 230 | version "1.0.2" 231 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" 232 | integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= 233 | 234 | readable-stream@^2.2.2: 235 | version "2.3.7" 236 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" 237 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 238 | dependencies: 239 | core-util-is "~1.0.0" 240 | inherits "~2.0.3" 241 | isarray "~1.0.0" 242 | process-nextick-args "~2.0.0" 243 | safe-buffer "~5.1.1" 244 | string_decoder "~1.1.1" 245 | util-deprecate "~1.0.1" 246 | 247 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 248 | version "5.1.2" 249 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 250 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 251 | 252 | shebang-command@^1.2.0: 253 | version "1.2.0" 254 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 255 | integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= 256 | dependencies: 257 | shebang-regex "^1.0.0" 258 | 259 | shebang-regex@^1.0.0: 260 | version "1.0.0" 261 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 262 | integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= 263 | 264 | spawn-sync@^1.0.15: 265 | version "1.0.15" 266 | resolved "https://registry.yarnpkg.com/spawn-sync/-/spawn-sync-1.0.15.tgz#b00799557eb7fb0c8376c29d44e8a1ea67e57476" 267 | integrity sha1-sAeZVX63+wyDdsKdROih6mfldHY= 268 | dependencies: 269 | concat-stream "^1.4.7" 270 | os-shim "^0.1.2" 271 | 272 | string_decoder@~1.1.1: 273 | version "1.1.1" 274 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 275 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 276 | dependencies: 277 | safe-buffer "~5.1.0" 278 | 279 | tunnel@0.0.6: 280 | version "0.0.6" 281 | resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" 282 | integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== 283 | 284 | typedarray@^0.0.6: 285 | version "0.0.6" 286 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" 287 | integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= 288 | 289 | typescript@^4.1.2: 290 | version "4.1.2" 291 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.2.tgz#6369ef22516fe5e10304aae5a5c4862db55380e9" 292 | integrity sha512-thGloWsGH3SOxv1SoY7QojKi0tc+8FnOmiarEGMbd/lar7QOEd3hvlx3Fp5y6FlDUGl9L+pd4n2e+oToGMmhRQ== 293 | 294 | universal-user-agent@^6.0.0: 295 | version "6.0.0" 296 | resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" 297 | integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== 298 | 299 | util-deprecate@~1.0.1: 300 | version "1.0.2" 301 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 302 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 303 | 304 | which@1.2.x: 305 | version "1.2.14" 306 | resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" 307 | integrity sha1-mofEN48D6CfOyvGs31bHNsAcFOU= 308 | dependencies: 309 | isexe "^2.0.0" 310 | 311 | which@^1.2.9: 312 | version "1.3.1" 313 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 314 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 315 | dependencies: 316 | isexe "^2.0.0" 317 | 318 | wrappy@1: 319 | version "1.0.2" 320 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 321 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 322 | 323 | yallist@^2.1.2: 324 | version "2.1.2" 325 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" 326 | integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= 327 | --------------------------------------------------------------------------------