├── .gitignore ├── FAQ.md ├── Newsletter TOC.yaml ├── README.md ├── RESOURCES.md ├── code-of-conduct.md └── phaser-world-parser ├── README.md ├── index.js ├── package.json └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | issue.yaml -------------------------------------------------------------------------------- /FAQ.md: -------------------------------------------------------------------------------- 1 | # Frequently Asked Questions 2 | (that we have answers to) 3 | 4 | Also note that [@samme][gh-samme] maintains [another FAQ][samme-faq] that you can 5 | check out! 6 | 7 | [gh-samme]: https://github.com/samme 8 | [samme-faq]: https://github.com/samme/phaser3-faq/wiki 9 | 10 | ## What is Phaser 4? Didn't Phaser 3 just come out? 11 | 12 | _Last Updated: 2019-10-23 13 | 14 | Phaser 4 is like an evolution of Phaser 3. Keep the best parts and improve the rest. 15 | Phaser 4 will be written in TypeScript and be more modular and tree-shakeable. 16 | The development has just started, but the plan is for you to be able to either 17 | use a Phaser 3-like API, or the new style of importing and using just what you need. 18 | You can read more about it in [Rich's patreon post][phaser4-patreon] 19 | 20 | [phaser4-patreon]: https://www.patreon.com/posts/phaser-4-process-29671934 21 | 22 | ## Will I have to use TypeScript with Phaser 4? 23 | 24 | _Last Updated: 2019-10-23 25 | 26 | No! When Phaser 4 is released, there will be prebuilt .js and .min.js made available, 27 | just like you're used to. If you consume the Phaser source directly, you can even 28 | setup your bundler to compile the TypeScript code for you, while still writing 29 | your code in JavaScript! 30 | 31 | ## I'm new to Phaser, what should I do? 32 | 33 | _Last Updated: 2018-05-17_ 34 | 35 | The key to learning game dev / Phaser is to _just build stuff_, it doesn't 36 | need to be good or even complete. The more you program the more you know 37 | and the easier it is to make what you imagine real. 38 | 39 | That said, if having a list of things that help you get started is useful 40 | we've compiled a bunch of introductory guides. They're ordered based on how 41 | much you're expected to already know and we're always happy to take 42 | suggestions about new stuff that should be added to the list. 43 | 44 | 1. [Getting Started][get-started]—This introduces you to the basics of how to 45 | run your game and gives provides a super simple game you can create. 46 | 2. [Making your first game][first-game]—Once you're comfortable with running 47 | a server and editing code work through this. It introduces some basic systems 48 | involved in a Phaser game. 49 | 3. [How to create a game][how-to-create]—This is a similar slice of information 50 | as _Making your first game_ but covers enough different information that it's 51 | worth reading through as well. 52 | 4. [How to structure your code][structure]—This isn't about how to program 53 | exactly but talks a little bit about how to organize your project so that it's 54 | easy to keep building on what you've got. Optional reading but I feel it's an 55 | important bit of information. 56 | 5. [Ask for help][community-links]—Get involved in the community! It's dangerous 57 | to go alone, take a friend, and don't be afraid to ask for help. 58 | 6. [How scenes work][scenes]—Goes into more detail about how scenes can work 59 | and can fit into your game. 60 | 61 | _Disclaimer:_ the author of this list wrote the structure and scenes posts 62 | 63 | The [phaser examples page][examples] is a rich source of code samples demonstrating 64 | various aspects of the Phaser framework. 65 | 66 | The [phaser API docs][apidocs] is an ever-improving source of information and great 67 | for self-directed exploration. 68 | 69 | If you'd like to help this list grow we'd like to add: 70 | 71 | - some guides about javascript basics etc 72 | - some simple sample projects with documentation 73 | 74 | [get-started]: https://phaser.io/tutorials/getting-started-phaser3/index 75 | [first-game]: https://phaser.io/tutorials/making-your-first-phaser-3-game 76 | [how-to-create]: https://gamedevacademy.org/phaser-3-tutorial/ 77 | [structure]: https://github.com/jdotrjs/phaser-guides/blob/master/Basics/Part1.md 78 | [scenes]: https://github.com/jdotrjs/phaser-guides/blob/master/Basics/Part3.md 79 | [community-links]: https://phaser.io/community 80 | [examples]: http://phaser.io/examples 81 | [apidocs]: https://photonstorm.github.io/phaser3-docs/ 82 | 83 | ## Where is the documentation and/or examples? 84 | 85 | _Last Updated: 2018-09-16_ 86 | 87 | The [phaser examples page][labs] is a rich source of code samples demonstrating 88 | various aspects of the Phaser framework. 89 | 90 | The [phaser API docs][apidocs] is an ever-improving source of information and great 91 | for self-directed exploration. 92 | 93 | ## How do I get started with multiplayer games? 94 | 95 | _Work in progress, last updated: 2018-06-20_ 96 | 97 | Right now this is just a collection of links that potentially may be useful: 98 | 99 | - (A great free course from Udacity / Google) https://eu.udacity.com/course/html5-game-development--cs255 100 | - http://buildnewgames.com/real-time-multiplayer/ 101 | - http://www.gabrielgambetta.com/client-side-prediction-server-reconciliation.html 102 | - (for phaser v2 but the theory is there) http://www.dynetisgames.com/2017/03/06/how-to-make-a-multiplayer-online-game-with-phaser-socket-io-and-node-js/ 103 | - (written in Haxe, but the theory is there) http://antriel.com/post/online-platformer-1/ 104 | - (non-code theory) https://gafferongames.com/post/what_every_programmer_needs_to_know_about_game_networking/ 105 | - (probably not where you want to start but quality info) https://developer.valvesoftware.com/wiki/Latency_Compensating_Methods_in_Client/Server_In-game_Protocol_Design_and_Optimization 106 | 107 | ## How do I scale a Phaser 3 game? Is there a ScaleManager in v3? 108 | 109 | _Last Updated: 2019-3-29_ 110 | 111 | With the release of 3.16, Phaser now comes with a ScaleManager built in! Examples on it can be found [here][sm-examples]. 112 | 113 | [sm-examples]: https://labs.phaser.io/index.html?dir=scalemanager/&q= 114 | 115 | If you're not on 3.16 or above you'll have to roll your own solution. Heres some examples 116 | - [Example page][danny-ex] from DannyT includes functional examples built using 117 | some of the principles discussed in the following links 118 | - [this gist][sm-gist] from Str1ngS bundles some scaling functionality into a class and 119 | demonstrates how to hook it into your game; the `orientation` and `content` references 120 | are HTML elements in your page that you cane use to implement "wrong orientation" overlays 121 | as described in [this post][sm-overlays] 122 | - [this thread][sm-thread] includes a (Haxe) code sample from community member Antriel 123 | - [a codepen][sm-cpen] sample linked from Samme includes another promising solution 124 | - [Scaling without framework support][sm-efer] Emanuele works through the principles 125 | of scaling your game regardless of framework support 126 | - [James Pierce posted the code he uses][sm-james] for scaling a game across devices 127 | 128 | [danny-ex]: http://phaser3.danny-t.co.uk/scaling/ 129 | [sm-gist]: https://gist.github.com/AleBles/697d703e89eecae5a350c1453a32861e 130 | [sm-thread]: http://www.html5gamedevs.com/topic/33206-scalemanagershow_all/ 131 | [sm-cpen]: https://codepen.io/samme/pen/paOjMO 132 | [sm-overlays]: https://www.creativebloq.com/web-design/master-screen-orientation-html5-101517371 133 | [sm-efer]: http://www.emanueleferonato.com/2018/02/16/how-to-scale-your-html5-games-if-your-framework-does-not-feature-a-scale-manager-or-if-you-do-not-use-any-framework/ 134 | [sm-james]: https://phaser.discourse.group/t/scaling-your-game-on-any-device/79 135 | 136 | ## Tell me the story of Phaser v3 and Typescript 137 | 138 | _Last Updated: 2019-10-08_ 139 | 140 | Typescript defs for Phaser have been available for a long time now. They are considered 141 | stable enough, and have been included in the types folder of the Phaser repository 142 | since Phaser 3.17. If you install Phaser with npm, that means you already have them 143 | downloaded. Before 3.17 they were available at [photonstorm/phaser3-docs][ts-defs]. 144 | If you are stuck on an old version, that file is the one you want to use, just make 145 | sure to use the one corresponding yo your version. Previously, [phaser#3224][ts-ticket] 146 | was the official tracking ticket for typescript support in Phaser. 147 | 148 | [ts-defs]: https://github.com/photonstorm/phaser3-docs/tree/master/typescript 149 | [ts-ticket]: https://github.com/photonstorm/phaser/issues/3224 150 | 151 | ## Is there a guide to porting my v2/CE project to v3? 152 | 153 | _Last Updated: 2018-03-14_ 154 | 155 | Not yet. There is a partial guide in [Newsletter issue 116][iss116] in the 156 | section named _Moving from Phaser 2 to Phaser 3 (Part 1)_. Part 2 is in 157 | [issue 118][iss118]. 158 | 159 | [iss116]: https://madmimi.com/p/a022cb 160 | [iss118]: https://madmimi.com/p/ff68db 161 | 162 | The API is similar enough that you will feel comfortable once you've figured 163 | out where things live but there is no mechanical solution to making a CE 164 | project run in v3. In that way it's definitely possible to make the jump for 165 | an existing project. 166 | 167 | That said, enough essential things are different (no `ScaleManager` yet, 168 | `Scene` works differently than `State`, etc.) that it takes a little thinking. 169 | The work to describe how all the old CE concepts map into v3 is planned 170 | but currently incomplete. 171 | 172 | ## Should I use Phaser CE or v3? 173 | 174 | _Last Updated: 2018-02-10 / 2018-10-28_ 175 | 176 | tl;dr: One of our members made a video talking about deciding whether or not 177 | to use v3: [go watch it][wild-v3] (thanks Wild)! For production stuff, Phaser CE 178 | is still a good choice, but if you're learning Phaser and/or feeling adventurous 179 | then v3 is a pretty good bet, and it's becoming better every day. 180 | 181 | That video was recorded Feb 10th. Since then we (the community at large) have 182 | leveled up several times about how well we understand and how much we've 183 | experimented with v3. Tutorials are beginning to emerge and several patch 184 | releases have appeared fixing bugs and adding previosly missing features. 185 | Broadly speaking getting into V3 is much easier than it was but still seeing 186 | quite a bit of development. If you're adventurous and willing to dig v3 is a 187 | good place to be. The API is cleaner than CE and it's definitely the future of 188 | Phaser so learning it to start with is probably a good move. 189 | 190 | If you need something exceptionally stable and battle worn that you can take 191 | into production _right now_ then you probably still want to stick with CE for 192 | the time being. By the numbers most deployed Phaser games are CE which means 193 | more time has been spent understanding it's edge cases. You're not going to 194 | see as many bugs or API changes than working off V3 but you're also not going 195 | to see any improvements. 196 | 197 | [wild-v3]: https://www.youtube.com/watch?v=St_tPsG0pX0 198 | 199 | ## My game behaves inconsistent/stops running while in the background 200 | _Last Updated: 2018-10-26_ 201 | 202 | Modern browsers place several restrictions on websites that run in the background. This usually means background tabs, but can also influence windows that are unfocused or partly hidden by another window. When in the background, requestAnimationFrame is not triggered, and it may be throttled when the website is unfocused. This means that Phaser's update loop won't run. Additionally, timers in background tabs may run less frequently than they normally would. Chrome only executes timers once per second, while Firefox has similar policies. The timers may be throttled even more in some cases. Playing audio or using websockets are usually an exception to this additional throttling. 203 | 204 | More details: 205 | - [Background tabs in chrome][chr-back-tabs] 206 | - [MDN page about background page policies][mdn-back-policy] 207 | 208 | [chr-back-tabs]: https://developers.google.com/web/updates/2017/03/background_tabs 209 | [mdn-back-policy]: https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API#Policies_in_place_to_aid_background_page_performance 210 | 211 | ## How do I post code? 212 | _Last Updated: 2018-12-06_ 213 | 214 | If you have a small bit of code (less than about 15-20 lines) to share the easiest approach 215 | is using the formatting support built into Discord. This means using ` ```javascript ` on 216 | a line by itself then entering your code: 217 | 218 | ![code format sample](https://i.imgur.com/OzQ4KtS.png) 219 | 220 | If you have a longer or multi-file segment of code you should create a new 221 | [gist](https://gist.github.com/) or [codepen](https://codepen.io/). 222 | -------------------------------------------------------------------------------- /Newsletter TOC.yaml: -------------------------------------------------------------------------------- 1 | - Issue: 137 2 | Date: 01/2019 3 | Link: https://madmimi.com/p/491c9d 4 | Tutorials: 5 | - name: Bot Framework Adventure Games 6 | desc: >- 7 | Creating an 8-bit adventure game using Phaser that you can control via the 8 | Microsoft Bot Framework. 9 | link: "http://phaser.io/news/2019/01/bot-framework-adventure-games" 10 | directlink: "https://dotnetrocks.com/?show=1610" 11 | tags: 12 | - podcast 13 | - bot 14 | - adventure 15 | - old-school 16 | - Microsoft Bot Framework 17 | - language 18 | - name: Facebook Instant Games Tutorial 19 | desc: >- 20 | A comprehensive guide to using the Facebook Instant Games Plugin in Phaser 21 | 3. 22 | link: "http://phaser.io/news/2019/01/facebook-instant-games-tutorial" 23 | directlink: >- 24 | https://phasertutorials.com/a-guide-to-using-the-facebook-instant-games-plugin-for-phaser-3-part-1/?a=13 25 | tags: 26 | - facebook 27 | - instant games 28 | - zenva 29 | - name: Learn to make HTML5 games with Phaser 3 30 | desc: >- 31 | A brand new tutorial covering the all important basics from a Phaser 2 32 | veteran. 33 | link: "http://phaser.io/news/2019/01/learn-to-make-html5-games-with-phaser-3" 34 | directlink: "https://www.lesscake.com/phaser-game-tutorial" 35 | tags: 36 | - lesscake 37 | - Thomas Palef 38 | - basics 39 | - scenes 40 | - sprites 41 | - text 42 | - collisions 43 | - tweens 44 | - name: Let's Build a Multiplayer Phaser Game 45 | desc: "With TypeScript, Socket.IO, and Phaser in this new book from Apress." 46 | link: "http://phaser.io/news/2019/01/lets-build-a-multiplayer-phaser-game" 47 | directlink: "https://www.apress.com/gb/book/9781484242483" 48 | version: v2 49 | tags: 50 | - multiplayer 51 | - typescript 52 | - socket.io 53 | - Apress 54 | - book 55 | Updates: 56 | - It will be possible to have an image fill the empty space around your game 57 | - 3.16 coming out after full screen is in scale manager and spine 3.7 support is added. 58 | - A root issue with transform matrices and game resolution above 1 might lead to high resolution support being disabled in 3.16. 59 | - Events now use constants, structured using namespaces 60 | - Every single event is now fully documented 61 | - Issue: 136 62 | Date: 01/2019 63 | Link: https://madmimi.com/p/8ee19d 64 | Tutorials: 65 | - name: rexUI Plugins 66 | desc: >- 67 | A powerful set of UI plugins for Phaser 3 that includes Grid Tables, 68 | Textboxes, Pop-up Menus, Labels and many more. 69 | link: "http://phaser.io/news/2019/01/rexui-plugins" 70 | directlink: "https://phaser.discourse.group/t/phaser-3-rexui-plugins/384" 71 | tags: 72 | - Rex Rainbow 73 | - plugin 74 | - grid 75 | - menu 76 | - tabs 77 | - slider 78 | - name: Creating a Phaser 3 Template 79 | desc: >- 80 | Part 1 of a tutorial on creating a common Phaser template that you can 81 | re-use across all of your projects. 82 | link: "http://phaser.io/news/2019/01/creating-a-phaser-3-template" 83 | directlink: "https://gamedevacademy.org/creating-a-phaser-3-template-part-1/" 84 | tags: 85 | - template 86 | - reusable 87 | - menu 88 | - options 89 | - settings 90 | - credits 91 | - name: Introduction to Phaser 3 Graphics 92 | desc: A video introduction to the Phaser 3 Graphics Game Object and how to use it. 93 | link: "http://phaser.io/news/2019/01/introduction-to-phaser-3-graphics" 94 | directlink: "https://youtu.be/xqRokokiwUk" 95 | tags: 96 | - graphics 97 | - video 98 | - youtube 99 | - name: itch.io games made with Phaser 100 | desc: >- 101 | There are over 1280 games made with Phaser on itch.io. Here is how to add 102 | yours to the list. 103 | link: "http://phaser.io/news/2019/01/itch-io-games-made-with-phaser" 104 | directlink: "https://itch.io/games/made-with-phaser" 105 | tags: 106 | - itch.io 107 | - engines & tools 108 | - metadata 109 | - tag 110 | - name: Super Size Me 111 | desc: Explains the new scale manager scaling modes and how to use them. 112 | link: https://madmimi.com/p/8ee19d 113 | tags: 114 | - Richard Davey 115 | - scale manager 116 | - scale modes 117 | - resize 118 | - envelop 119 | - fit 120 | 121 | Updates: 122 | - More modern scale manager, rewritten from scratch 123 | - New Size component inspired by Unity's Aspect Ratio Fitter 124 | - Scale manager supports orientation, full screen coming soon 125 | - Issue: 135 126 | Date: 01/2019 127 | Link: https://madmimi.com/p/aa218d 128 | Tutorials: 129 | - name: Atlas Packer Phaser 130 | desc: A free web based texture atlas creator for Phaser 3. 131 | link: "http://phaser.io/news/2019/01/atlas-packer-phaser" 132 | directlink: "https://gammafp.github.io/atlas-packer-phaser/" 133 | tags: 134 | - texture atlas 135 | - texture packing 136 | - free 137 | - name: Phaser Backer Examples January 2019 138 | desc: >- 139 | The January Phaser Backer Examples are now available including animated Tile 140 | Sprites and Pointer followers. 141 | link: "http://phaser.io/news/2019/01/phaser-backer-examples-january" 142 | directlink: "http://phaser.io/community/donate" 143 | tags: 144 | - Richard Davey 145 | - patron 146 | - examples 147 | - january 148 | - name: How to make an Arcade Physics Sprite stop at a specific position 149 | desc: Shows how to use velocity to move an object using the physics system and make it stop at some coorinate 150 | link: https://madmimi.com/p/aa218d 151 | tags: 152 | - Richard Davey 153 | - physics 154 | - moveToObject 155 | - velocity 156 | Updates: 157 | - Wrapping up the Spine plugin soon 158 | - Working on the scale manager will continue 159 | - Multiple scenes with draggable objects bug fix and explanation 160 | - Issue: 134 161 | Date: 12/2018 162 | Link: https://madmimi.com/p/20be5d 163 | Tutorials: 164 | - name: Phaser Backer Examples December 2018 165 | desc: >- 166 | The Phaser Backer Examples are now available including a Scrollbars 167 | component, Scene Builder and Swipe Gestures. 168 | link: "http://phaser.io/news/2018/12/phaser-backer-examples-december" 169 | directlink: "http://phaser.io/community/donate" 170 | tags: 171 | - Richard Davey 172 | - patron 173 | - examples 174 | - december 175 | - name: Facebook Instant Games Ads Tutorial 176 | desc: Learn how to create and display ads in your Facebook Instant Games using the Phaser 3 Plugin. 177 | link: http://phaser.io/news/2018/12/facebook-instant-games-ads-tutorial 178 | directlink: http://phaser.io/tutorials/facebook-instant-games-ads 179 | tags: 180 | - Richard Davey 181 | - instant games 182 | - facebook 183 | - messenger 184 | - ads 185 | - name: Creating a Phaser 3 Text Style Library 186 | desc: A tutorial on creating a library of Text Styles for use in Phaser 3 games. 187 | link: http://phaser.io/news/2018/12/creating-a-phaser-3-text-style-library 188 | directlink: https://phasergames.com/creating-a-phaser-3-text-style-library/ 189 | tags: 190 | - Phaser 3 191 | - text styles 192 | - text game object 193 | - name: Phaser + Electron + TypeScript + Parcel 194 | desc: A minimal template combining Phaser 3, Electron, TyperScript and Parcel to bundle it all together. 195 | link: http://phaser.io/news/2018/12/phaser-electron-typescript-parcel 196 | directlink: https://github.com/distantcam/phaser-electron-typescript-parcel 197 | tags: 198 | - electron 199 | - parcel 200 | - typescript 201 | - bundler 202 | - name: Tower Defense Tutorial 203 | desc: A comprehensive tutorial on creating a tower defense game in Phaser 3. 204 | link: http://phaser.io/news/2018/12/tower-defense-tutorial 205 | directlink: https://gamedevacademy.org/how-to-make-tower-defense-game-with-phaser-3/ 206 | tags: 207 | - tower defense 208 | - enemies 209 | - turrets 210 | - bullets 211 | - bullet physics 212 | - name: Buttons in Phaser 3 213 | desc: A tutorial on creating your own Text Button Game Object in Phaser 3. 214 | link: http://phaser.io/news/2018/12/buttons-in-phaser-3 215 | directlink: https://snowbillr.github.io/blog/2018-07-03-buttons-in-phaser-3/ 216 | tags: 217 | - button 218 | - component 219 | - button states 220 | - class 221 | - name: Sokoban Phaser 3 Tutorial Part 1 222 | desc: A comprehensive tutorial series on creating the classic game Sokoban in Phaser 3. 223 | link: http://phaser.io/news/2018/12/sokoban-phaser-3-tutorial-part-1 224 | directlink: https://www.crazygames.com/blog/2018/10/24/Implementing-Sokoban-in-Phaser3/ 225 | tags: 226 | - sokoban 227 | - puzzle 228 | - logic 229 | - name: Sokoban Phaser 3 Tutorial Part 2 230 | desc: In part 2 of this comprehensive tutorial series it covers creating a fully interactive level. 231 | link: http://phaser.io/news/2018/12/sokoban-phaser-3-tutorial-part-2 232 | directlink: https://www.crazygames.com/blog/2018/10/24/Sokoban-Series-Part-2-Creating-an-Interactive-Level/ 233 | tags: 234 | - sokoban 235 | - puzzle 236 | - logic 237 | - name: Sokoban Phaser 3 Tutorial Part 3 238 | desc: In part 3 of this comprehensive tutorial series it covers handling input and game logic. 239 | link: http://phaser.io/news/2018/12/sokoban-phaser-3-tutorial-part-3 240 | directlink: https://www.crazygames.com/blog/2018/10/24/Sokoban-Series-Part-3-Handling-Input/ 241 | tags: 242 | - sokoban 243 | - puzzle 244 | - logic 245 | - input 246 | - name: Sokoban Phaser 3 Tutorial Part 4 247 | desc: In part 4 of this comprehensive tutorial series it covers creating a game overlay in React. 248 | link: http://phaser.io/news/2018/12/sokoban-phaser-3-tutorial-part-4 249 | directlink: https://www.crazygames.com/blog/2018/10/24/Sokoban-Series-Part-4-Creating-an-Overlay-in-React/ 250 | tags: 251 | - sokoban 252 | - puzzle 253 | - logic 254 | - overlay 255 | - menu 256 | - react 257 | - name: Sokoban Phaser 3 Tutorial Part 5 258 | desc: In the final part of this comprehensive tutorial series learn how to publish your game and earn money from ads. 259 | link: http://phaser.io/news/2018/12/sokoban-phaser-3-tutorial-part-1 260 | directlink: https://www.crazygames.com/blog/2018/10/24/Sokoban-Series-Part-5-Publishing-your-Game/ 261 | tags: 262 | - sokoban 263 | - puzzle 264 | - logic 265 | - publishing 266 | - ads 267 | - monetization 268 | Updates: 269 | - New phaser forum at phaser.discourse.group 270 | - Changes to keyboard events 271 | - Control over keyboard capturing 272 | - Creating new animations with existing key just returns the existing animation 273 | - New animation events and support for animation chaining 274 | - Issue: 133 275 | Date: 12/2018 276 | Link: https://madmimi.com/p/38bb2d 277 | Tutorials: 278 | - name: Retro Highscore Table Tutorial 279 | desc: A new multi-part tutorial on creating a retro styled high-score table in Phaser 3 with modern inputs. 280 | link: http://phaser.io/news/2018/11/retro-highscore-table-tutorial 281 | directlink: http://phaser.io/tutorials/retro-highscore-table/index 282 | tags: 283 | - retro 284 | - Richard Davey 285 | - intermediate 286 | - name: Circle vs. Line Segment Tutorial 287 | desc: A short but useful tutorial on handling circle to line segment intersection in your games. 288 | link: http://phaser.io/news/2018/10/circle-vs-line-segment-tutorial 289 | directlink: https://www.emanueleferonato.com/2018/08/06/pure-mathematics-line-segment-vs-circle-collision-detection-along-with-html5-example/ 290 | tags: 291 | - Emanuele Feronato 292 | - intersection 293 | - phaser 2 294 | - name: Facebook Instant Games Leaderboards Tutorial 295 | desc: Learn how to create and use Leaderboards with the Facebook Instant Games Plugin for Phaser 3. 296 | link: http://phaser.io/news/2018/11/facebook-instant-games-leaderboards-tutorial 297 | directlink: http://phaser.io/tutorials/facebook-instant-games-leaderboards/index 298 | tags: 299 | - Richard Davey 300 | - Leaderboards 301 | - instant games 302 | - facebook 303 | - messenger 304 | - name: Circular Endless Runner Tutorial 305 | desc: Learn how to create a circular endless runner in part one of this new tutorial series. 306 | link: http://phaser.io/news/2018/10/circular-endless-runner-tutorial 307 | directlink: https://www.emanueleferonato.com/2018/08/01/html5-prototype-of-a-circular-endless-runner-featuring-double-jump-built-with-phaser-using-only-trigonometry/ 308 | tags: 309 | - Emanuele Feronato 310 | - prototype 311 | - name: Down the Mountain Tutorial Part 2 312 | desc: In the second part of this series the prototype is updated so the jump is handled using cubic bezier curves. 313 | link: http://phaser.io/news/2018/10/down-the-mountain-tutorial-part-2 314 | directlink: https://www.emanueleferonato.com/2018/07/26/html5-down-the-mountain-prototype-built-with-phaser-3-updated-fake-3d-jump-using-cubic-bezier-curves-and-not-using-containers-anymore/ 315 | tags: 316 | - Emanuele Feronato 317 | - bezier 318 | - down the mountain 319 | - name: Making Games in Phaser 3 - Part 2 320 | desc: A video overview of Scenes in Phaser 3 and what they can do. 321 | link: http://phaser.io/news/2018/10/making-games-in-phaser-3-part-2 322 | directlink: https://www.youtube.com/watch?v=ECE1Al-M4DM 323 | tags: 324 | - youtube 325 | - scenes 326 | - name: How to make a Roguelike 327 | desc: A truly massive article on creating rogue-likes, best practices, and innovation in the field. 328 | link: https://madmimi.com/p/38bb2d 329 | directlink: https://www.gridsagegames.com/blog/2018/10/how-to-make-a-roguelike/ 330 | tags: 331 | - primer 332 | - grid sage games 333 | - cogmind 334 | Updates: 335 | - The doc jam is over, under 800 items left! 336 | - Input manager changes caused by the scale manager coming. 337 | - Pointer position is now calculated internally using a "ghost" vector following the pointer 338 | - New blend mode ERASE for 3.16 339 | 340 | - Issue: 132 341 | Date: 10/2018 342 | Link: https://madmimi.com/p/81a31d 343 | Tutorials: 344 | - name: Using the Spine Plugin for skeletal animation 345 | link: https://madmimi.com/p/81a31d 346 | desc: This discusses the licensing requirements to use the Spine runtimes in your game and works through an example of using it to display an animated sprite. 347 | tags: 348 | - spine 349 | - phaser feature guide 350 | - animation 351 | - name: Facebook Instant Games Phaser Tutorial 352 | desc: The first in a series of long-form tutorials covering the process of creating a Facebook Instant Game with Phaser 3. 353 | link: http://phaser.io/news/2018/10/facebook-instant-games-phaser-tutorial 354 | directlink: http://phaser.io/tutorials/getting-started-facebook-instant-games/ 355 | tags: 356 | - instant games 357 | - Richard Davey 358 | - facebook 359 | - messenger 360 | - name: Managing Big Maps in Phaser 3 361 | desc: A tutorial on splitting your game world up into chunks and progressively handling it as the player moves around. 362 | link: http://phaser.io/news/2018/10/managing-big-maps-in-phaser-3 363 | directlink: http://www.dynetisgames.com/2018/02/24/manage-big-maps-phaser-3/ 364 | tags: 365 | - open world 366 | - chunks 367 | - rpg 368 | - dynestis games 369 | - name: Tweens and Curves Tutorial 370 | desc: Learn how to use Tweens with curves and Bezier Curves with full source code. 371 | link: http://phaser.io/news/2018/10/tweens-and-curves-tutorial 372 | directlink: https://www.emanueleferonato.com/2018/07/19/playing-with-phaser-3-tweens-curves-and-cubic-bezier-curves/ 373 | tags: 374 | - Emanuele Feronato 375 | - curves 376 | - bezier 377 | - name: Down the Mountain Tutorial 378 | desc: In this tutorial Emanuele updates his “Down the Mountain” prototype to Phaser 3 with full source code. 379 | link: http://phaser.io/news/2018/10/down-the-mountain-tutorial 380 | directlink: https://www.emanueleferonato.com/2018/07/06/html5-down-the-mountain-prototype-built-with-phaser-updated-to-phaser-3/ 381 | tags: 382 | - Emanuele Feronato 383 | - down the mountain 384 | - object pooling 385 | Updates: 386 | - The docjam is nearly over (that means the doc coverage is nearing 100%!) 387 | - Spine Plugin development continues, expected release 2018-11-09 388 | - The Spine work resulted in some neat refactors to how rendering pipelines work making it possible to hand off a canvas/WebGL context to a third party renderer. 389 | - Scale Manager work resumes post-Spine and both should arrive in 3.16 390 | - Complete docs are likely to land in 3.17 391 | - "Exciting 2019 plans: refactoring to ES6 or Typescript" 392 | Releases: 393 | - 3.15.1 394 | 395 | - Issue: 131 396 | Date: 10/2018 397 | Link: https://madmimi.com/p/6f870d 398 | Tutorials: 399 | - name: A deep dive into 'this' in JavaScript 400 | desc: This post is geared towards those of you who have no preconceptions of what you think this is or what it should be. I will try to explain what this is and why it is helpful in a simple manner without unnecessary jargon. 401 | link: https://madmimi.com/p/6f870d 402 | directlink: https://medium.freecodecamp.org/a-deep-dive-into-this-in-javascript-why-its-critical-to-writing-good-code-7dca7eb489e7 403 | tags: 404 | - javascript 405 | - this 406 | - scoping 407 | - name: Wheel of Fortune Part 3 408 | series: Wheel of Fortune 409 | desc: Expands on the previous tutorials to allow configuration of slice size. 410 | link: https://phaser.io/news/2018/10/wheel-of-fortune-tutorial-part-3 411 | directlink: https://phaser.io/news/2018/10/wheel-of-fortune-tutorial-part-3 412 | version: v3 413 | tags: 414 | - Emanuele Feronato 415 | - graphics 416 | - tween 417 | - resize 418 | - name: Wheel of Fortune Part 4 419 | series: Wheel of Fortune 420 | desc: Completes the Wheel of Fortune series by using containers to attach prizes to our wheel. 421 | link: https://phaser.io/news/2018/10/wheel-of-fortune-tutorial-part-4 422 | directlink: https://www.emanueleferonato.com/2018/06/20/build-a-wheel-of-fortune-for-your-html5-games-with-phaser-3-in-only-a-few-lines-adding-icons-using-the-brand-new-phaser-3-containers/ 423 | version: v3 424 | tags: 425 | - Emanuele Feronato 426 | - graphics 427 | - tween 428 | - resize 429 | - container 430 | - name: Knife Hit Part 4 431 | series: Knife Hit 432 | desc: Adds collectable items to our knife throwing game. 433 | link: https://phaser.io/news/2018/10/knife-hit-tutorial-part-4 434 | directlink: https://www.emanueleferonato.com/2018/06/15/build-a-html5-game-like-knife-hit-with-phaser-3-using-only-tweens-and-trigonometry-adding-apples-and-slicing-them-too/ 435 | version: v3 436 | tags: 437 | - Emanuele Feronato 438 | - graphics 439 | - tween 440 | - resize 441 | - name: Accessing Matter.js Directly 442 | desc: Adding objects to a Matter.js world without using a Phaser intermediary object. 443 | link: https://madmimi.com/p/6f870d 444 | version: v3 445 | tags: 446 | - physics 447 | - matter 448 | - phaser feature guide 449 | 450 | Updates: 451 | - "Doc Jam: Write docs, win prizes" 452 | - Scale Manager gets a full rewrite, will come with fullscreen API support 453 | - labs.phaser.io will soon stop using the dev build in edit mode 454 | - Spine plugin progress continues and demos should be landing soon 455 | - 3.14 iOS performance regression identified and fixed 456 | 457 | - Issue: 130 458 | Date: 10/2018 459 | Link: https://madmimi.com/p/eeb5ec 460 | Tutorials: 461 | - name: Progressive Web Apss 462 | version: v3 463 | desc: Learn to create hybrid mobile + desktop games. 464 | link: https://phaser.io/news/2018/10/progressive-web-apps-tutorial 465 | directlink: https://gamedevacademy.org/phaser-progressive-web-apps-tutorial/ 466 | tags: 467 | - mobile 468 | - zenva 469 | - service worker 470 | - offline 471 | - name: Wheel of Fortune Pt 1 472 | series: Wheel of Fortune 473 | version: v3 474 | desc: Build a wheel of fortune on the fly using Phaser's graphic object then turn it into a sprite. 475 | link: https://phaser.io/news/2018/10/wheel-of-fortune-tutorial-part-1 476 | directlink: https://www.emanueleferonato.com/2018/05/29/build-a-wheel-of-fortune-for-your-html5-games-with-phaser-in-only-a-few-lines-draw-the-wheel-on-the-fly-with-large-room-for-customization/ 477 | tags: 478 | - Emanuele Feronato 479 | - graphics 480 | - tween 481 | - resize 482 | - name: Wheel of Fortune Pt 2 483 | series: Wheel of Fortune 484 | version: v3 485 | desc: Builds on the previous Wheel of Fortune guide and makes it prettier and with better "spin feel." 486 | link: https://phaser.io/news/2018/10/wheel-of-fortune-tutorial-part-2 487 | directlink: https://www.emanueleferonato.com/2018/06/06/build-a-wheel-of-fortune-for-your-html5-games-with-phaser-3-in-only-a-few-lines-adding-gradients-rings-and-inertia-effect/ 488 | tags: 489 | - Emanuele Feronato 490 | - graphics 491 | - gradient 492 | - tween 493 | - resize 494 | - name: Phaser Factories Guide 495 | version: v3 496 | desc: Learn how to utilize the power of GameObjectFactory and friends. 497 | link: https://madmimi.com/p/eeb5ec 498 | tags: 499 | - factory 500 | - phaser feature guide 501 | - gameobjectfactory 502 | 503 | Updates: 504 | - New Sticker Packs! 505 | - "Doc Jam: Write docs, win prizes" 506 | - Tilemap improvements 507 | - "Scale Manager: now targetting 3.15.0" 508 | - Container rewrite beginning in 3.16 509 | - Spine Plugin proof of concept work 510 | 511 | Releases: 512 | - 3.14.0 513 | - 2.11.1 514 | 515 | - Issue: 129 516 | Date: 09/2018 517 | Link: https://madmimi.com/p/53ecdc 518 | Tutorials: 519 | - name: Modular Game Worlds Part 5 520 | version: v3 521 | series: Modular Game Worlds 522 | desc: Build a physics platformer using Matter.JS and tilemaps! 523 | link: https://phaser.io/news/2018/09/modular-game-worlds-in-phaser-3-part5 524 | directlink: https://itnext.io/modular-game-worlds-in-phaser-3-tilemaps-5-matter-physics-platformer-d14d1f614557 525 | tags: 526 | - matter 527 | - physics 528 | - modular 529 | - tilemap 530 | - tiled 531 | - platformer 532 | - Michael Hadley 533 | - name: "Zenva: Turn based RPG Part 2" 534 | version: v3 535 | desc: Continue building your RPG by adding in the battle system. 536 | series: Turn-Based RPG 537 | link: https://phaser.io/news/2018/09/how-to-create-a-turn-based-rpg-in-phaser-3-part2 538 | directlink: https://gamedevacademy.org/how-to-create-a-turn-based-rpg-game-in-phaser-3-part-2/ 539 | tags: 540 | - turn-based 541 | - zenva 542 | - rpg 543 | - battle 544 | - event 545 | - menu 546 | - interface 547 | 548 | Updates: 549 | - Facebook Instant Game Plugin available 550 | - "Announcing Doc Jam: working together to fill the holes in the documentation" 551 | 552 | Releases: 553 | - 3.13.0 554 | 555 | - Issue: 128 556 | Date: 09/2018 557 | Link: https://madmimi.com/p/47d9cc 558 | 559 | Tutorials: 560 | - name: Modular Game Worlds Part 4 561 | series: Modular Game Worlds 562 | version: v3 563 | desc: Add realistic physics to your game world with Matter.js 564 | link: https://phaser.io/news/2018/09/modular-game-worlds-in-phaser-3-part4 565 | directlink: https://itnext.io/modular-game-worlds-in-phaser-3-tilemaps-4-meet-matter-js-abf4dfa65ca1 566 | tags: 567 | - Michael Hadley 568 | - matter 569 | - physics 570 | - modular 571 | - tilemap 572 | - tiled 573 | - platformer 574 | 575 | - name: "Zenva: Turn based RPG Part 1" 576 | series: Turn-Based RPG 577 | desc: Build a turn-based RPG similar to the early Final Fantasy games while learning to use many neat features of Phaser 578 | version: v3 579 | link: https://phaser.io/news/2018/09/how-to-create-a-turn-based-rpg-in-phaser-3 580 | directlink: https://gamedevacademy.org/how-to-create-a-turn-based-rpg-game-in-phaser-3-part-1/ 581 | tags: 582 | - zenva 583 | - turn-based 584 | - rpg 585 | - scene 586 | - tilemap 587 | - tiled 588 | - arcade 589 | - physics 590 | - camera effects 591 | 592 | - name: A Star Maze solving 593 | version: v3 594 | desc: Learn how to navigate a procedural environment using EasyStar.js and Phaser 595 | link: https://phaser.io/news/2018/09/a-star-maze-solving-tutorial 596 | directlink: https://www.emanueleferonato.com/2018/05/24/pure-javascript-a-maze-solving-with-a-bit-of-magic-thanks-to-phaser-and-easystar-js-updated-to-phaser-3-8-0-and-easystar-js-0-4-3/ 597 | tags: 598 | - a* 599 | - a star 600 | - procedural generation 601 | - procgen 602 | - Emanuele Feronato 603 | 604 | - name: Circular progress meter 605 | version: v3 606 | desc: Build a configurable, circular, progress meter 607 | link: https://phaser.io/news/2018/09/circle-pie-meter-class 608 | directlink: https://updatestage.com/quick-code-circle-pie-meter-class-for-phaser-3/ 609 | tags: 610 | - progress bar 611 | - graphics 612 | 613 | - name: Shape Game Object 614 | desc: Getting to know the new Shape game object 615 | link: https://madmimi.com/p/47d9cc 616 | version: v3 617 | tags: 618 | - phaser feature guide 619 | - graphics 620 | - shape 621 | 622 | Updates: 623 | - Significant improvements made to the core renderer; comes with API and TypeScript doc updates 624 | - Facebook Instant Games Plugin and new Shapes object are coming in 3.13 625 | - DOM Game Objects, DOM Camera, and the new Scale Manager planned for 3.14 626 | - Hoping that 3.15 will see a Container and Transforms overhaul 627 | - Photonstorm looking to write some first-party phaser3 books and tutorials after 3.15 release 628 | - Finally, loading Game Object and Scene layouts from JSON targeting a far future release, maybe 3.16 629 | 630 | Releases: 631 | - 3.12.0 632 | 633 | - Issue: 127 634 | Date: 09/2018 635 | Link: https://madmimi.com/p/ffcfbc 636 | Tutorials: 637 | - name: Modular Game Worlds Part 3 638 | series: Modular Game Worlds 639 | version: v3 640 | link: https://phaser.io/news/2018/08/modular-game-worlds-in-phaser-3-part3 641 | directlink: https://phaser.io/news/2018/08/modular-game-worlds-in-phaser-3-part3 642 | desc: This is the third post in a series of blog posts about creating modular worlds with tilemaps in the Phaser 3 game engine. In this edition, we’ll create an endless, procedurally-generated dungeon 643 | tags: 644 | - arcade 645 | - physics 646 | - modular 647 | - tilemap 648 | - procedural generation 649 | - procgen 650 | - dungeon 651 | - dynamicetilemaplayer 652 | - tiled 653 | - platformer 654 | - Michael Hadley 655 | 656 | - name: Wheel of Fortune Part 1 657 | series: Wheel of Fortune 658 | version: v3 659 | link: https://phaser.io/news/2018/08/wheel-of-fortune-tutorial 660 | directlink: https://www.emanueleferonato.com/2018/05/22/build-a-wheel-of-fortune-for-your-html5-games-with-phaser-in-only-a-few-lines-updated-to-phaser-3-8-0/ 661 | desc: Works through the process of building a configurable wheel of fortune style prize spinner 662 | tags: 663 | - Emanuele Feronato 664 | - graphics 665 | - tween 666 | - resize 667 | - input 668 | 669 | - name: Knife Hit Part 3 670 | series: Knife Hit 671 | version: v3 672 | desc: Continues the process of building a knife throwing game; this step adds varying target speeds 673 | link: https://phaser.io/news/2018/08/knife-hit-tutorial-part-2 674 | directlink: https://www.emanueleferonato.com/2018/05/09/build-a-html5-game-like-knife-hit-with-phaser-3-using-only-tweens-and-trigonometry-changing-target-speed/ 675 | tags: 676 | - Emanuele Feronato 677 | - graphics 678 | - tween 679 | - resize 680 | - name: Jumping on Enemies 681 | desc: Updated tutorial on how to check that your character is jumping on top of an enemy with simple physics 682 | version: v3 683 | link: https://phaser.io/news/2018/08/jumping-on-enemies-tutorial 684 | directlink: https://www.emanueleferonato.com/2018/05/03/the-basics-behind-jumping-on-enemies-feature-explained-with-phaser-and-arcade-physics-updated-to-phaser-3/ 685 | tags: 686 | - physics 687 | - arcade 688 | - Emanuele Feronato 689 | 690 | - name: Creating Custom Phaser Builds 691 | version: v3 692 | link: https://madmimi.com/p/ffcfbc 693 | desc: Learn how to create streamlined versions of phaser by eliminating systems you don't use. 694 | tags: 695 | - phaser feature guide 696 | - javascript 697 | - webpack 698 | - bundling 699 | - tools 700 | Updates: 701 | - 3.12 is delayed but progress continues 702 | - Cameras that ignore a game object can no longer interact with it 703 | - setTintFill now respects the alpha of a game object 704 | 705 | - Issue: 126 706 | Date: 08/2018 707 | Link: https://madmimi.com/p/0fc8bc 708 | Tutorials: 709 | - name: Modular Game Worlds Part 2 710 | series: Modular Game Worlds 711 | version: v3 712 | link: https://phaser.io/news/2018/08/modular-game-worlds-in-phaser-3-part2 713 | directlink: https://itnext.io/modular-game-worlds-in-phaser-3-tilemaps-2-dynamic-platformer-3d68e73d494a 714 | desc: Dives into dynamic tilemaps to build a platformer 715 | tags: 716 | - arcade 717 | - physics 718 | - modular 719 | - tilemap 720 | - dynamicetilemaplayer 721 | - tiled 722 | - platformer 723 | - Michael Hadley 724 | - name: Build Yeah Bunny clone! 725 | version: v3 726 | link: https://phaser.io/news/2018/08/yeah-bunny-tutorial 727 | directlink: https://www.emanueleferonato.com/2018/04/28/super-mario-who-html5-platformer-prototype-inspired-by-ios-hit-yeah-bunny-thanks-to-phaser-and-arcade-physics-updated-to-phaser-3-6-0/ 728 | desc: Walk thorugh the code to build an autorunner with Arcade physics in Phaser3. 729 | tags: 730 | - autorunner 731 | - physics 732 | - arcade 733 | - Emanuele Feronato 734 | - input 735 | - tilemap 736 | - platformer 737 | - wall jump 738 | 739 | - name: Loading assets as data URI 740 | version: v3 741 | link: https://phaser.io/news/2018/08/data-uri-tutorial 742 | directlink: https://supernapie.com/blog/loading-assets-as-data-uri-in-phaser-3 743 | desc: This guide explains how you can load the assets of your Phaser 3 game as data URI's, without having to rely on xhr requests. I'll cover images, spritesheets and audio. 744 | tags: 745 | - xhr 746 | - data uri 747 | - asset 748 | - base64 749 | - webpack 750 | - bundling 751 | 752 | - name: Integrate with Facebook Instant Games API for leaderboards 753 | version: v2 754 | link: https://phaser.io/news/2018/08/fb-leaderboards-tutorial 755 | directlink: https://www.emanueleferonato.com/2018/04/24/how-to-integrate-facebook-instant-games-api-in-your-phaser-game-managing-leaderboards/ 756 | desc: Learn how to create and manage leaderboards with Facebook Instant Games API and Phaser 2. 757 | tags: 758 | - Facebook Instant Game 759 | - Emanuele Feronato 760 | 761 | Updates: 762 | - 3.12 is getting large; Facebook Instant Games, Scale Manager, and DOM Game Objects are now in an experimental build flag 763 | - Expect 3.13 to contain the Facebook Instant Games Plugin 764 | - A full rewrite of containers is coming soon 765 | - Phaser 3 now supports alternate tilemap render orders 766 | - Support for scaling SVG to fractional or specific size as part of the loader 767 | - The version of Matter.js used was updated 768 | - New version of the Slopes plugin is released for v3 769 | 770 | Releases: 771 | - 3.12.0-beta3 772 | 773 | - Issue: 125 774 | Date: 08/2018 775 | Link: https://madmimi.com/p/933c9c 776 | Tutorials: 777 | - name: Converting Flash games to Phaser 778 | desc: Discusses common mistakes and techniques for converting a Flash game to Phaser. Based on version 2 most advice applies across the board and is worth a read. 779 | version: v2 780 | link: https://phaser.io/news/2018/08/converting-a-flash-game-into-html5 781 | directlink: https://www.smashingmagazine.com/2018/07/converting-flash-game-html5/ 782 | tags: 783 | - flash 784 | - port 785 | - interface 786 | - ui 787 | - custom font 788 | - save game 789 | - name: Palette Swapping in Phaser 790 | version: v3 791 | desc: Inspired by the Phaser2 guide this addresses how to easily customize the display of sprites using the simple technique of palette swapping. 792 | link: https://phaser.io/news/2018/08/palette-swapping-example 793 | directlink: https://github.com/Colbydude/phaser-3-palette-swapping-example 794 | tags: 795 | - palette 796 | 797 | - name: Platette Swapping in Phaser 798 | version: v2 799 | desc: This tutorial works through how palette swapping can be used to provide color-customized versions of a sprite with ease. 800 | directlink: https://laxvikinggames.blogspot.com/2015/01/build-dynamic-texture-atlas-in-phaser.html 801 | tags: 802 | - palette 803 | 804 | - name: Support Retina images in your game 805 | desc: High resolution displays call for high definition art. This tutorial guides you on how to make sure your work is super crisp on HD displays. 806 | version: v3 807 | link: https://phaser.io/news/2018/08/retina-tutorial 808 | directlink: https://supernapie.com/blog/support-retina-with-phaser-3 809 | tags: 810 | - HD 811 | - DPI 812 | - resize 813 | 814 | Updates: 815 | - Massive changes to RenderTexture are coming! Read about them here. 816 | - TileSprite implementation update which improves performance in most cases and supports croping. 817 | 818 | Releases: 819 | - 3.12.0-beta2 820 | 821 | - Issue: 124 822 | Date: 07/2018 823 | Link: https://madmimi.com/p/9b529c 824 | Tutorials: 825 | - name: Setting up a modern webdev environment for Phaser 826 | desc: Learn how to use modern tooling to set up a sustainable Javascript project and how to leverage those tools with Phaser development. 827 | version: v3 828 | link: https://phaser.io/news/2018/07/modern-phaser-3-web-dev-tutorial 829 | directlink: https://snowbillr.github.io/blog/2018-04-09-a-modern-web-development-setup-for-phaser-3/ 830 | tags: 831 | - webdev 832 | - tools 833 | - yarn 834 | - webpack 835 | - babel 836 | - javascript 837 | 838 | - name: Modular Game Worlds Part 1 839 | version: v3 840 | series: Modular Game Worlds 841 | desc: Build a physics platformer using Matter.JS and tilemaps! 842 | link: https://phaser.io/news/2018/07/modular-game-worlds-in-phaser-3 843 | directlink: https://medium.com/@michaelwesthadley/modular-game-worlds-in-phaser-3-tilemaps-1-958fc7e6bbd6 844 | tags: 845 | - arcade 846 | - physics 847 | - modular 848 | - tilemap 849 | - tiled 850 | - top down 851 | - Michael Hadley 852 | 853 | - name: Textured Graphics 854 | version: v3 855 | desc: Explanation of new features available once Flat Tint and Texture Tint pipelines are unified 856 | link: https://madmimi.com/p/9b529c 857 | tags: 858 | - graphics 859 | - setTexture 860 | - phaser feature guide 861 | 862 | Updates: 863 | - Flat Tint Pipeline is being replaced with the Texture Tint Pipeline improving performance of mixing Graphics and Game Objects 864 | - Beginning to think about Shape as a new Game Object 865 | - Started work on the Facebook Instant Games plugin 866 | 867 | Releases: 868 | 869 | - Issue: 123 870 | Date: 07/2018 871 | Link: https://madmimi.com/p/29f98c 872 | Tutorials: 873 | - name: Creating a multiplayer game with the blockchain 874 | desc: Zac Holland has written a tutorial about creating a multiplayer blockchain game using Phaser, node.js and Ethereum. 875 | version: v3 876 | link: https://phaser.io/news/2018/07/multiplayer-blockchain-game-tutorial 877 | directlink: https://itnext.io/making-a-multiplayer-blockchain-game-using-phaser-nodejs-and-ethereum-pt-2-702b0c667e44 878 | tags: 879 | - node 880 | - blockchain 881 | - ethereum 882 | - multiplayer 883 | - planck 884 | - socket.io 885 | - web3 886 | 887 | - name: DOM Element Game Object 888 | desc: Learn about using the new DOM element in your game. 889 | version: v3 890 | link: https://madmimi.com/p/29f98c 891 | tags: 892 | - DOM 893 | - HTML 894 | - interface 895 | - ui 896 | - menu 897 | - phaser feature guide 898 | 899 | Updates: 900 | - Work continues on the new Scale Manager and Facebook Instanc Games integration 901 | - DOM Element Game Object in progress! 902 | - Nested containers slated for removal after 3.12 is released 903 | 904 | Releases: 905 | - 2.11.0 906 | 907 | - Issue: 122 908 | Date: 07/2018 909 | Link: https://madmimi.com/p/abd23c 910 | Tutorials: 911 | - name: Tilemap Mini-Tutorial 912 | version: v3 913 | desc: Learn more about Tilemaps, including tilemap culling and tileset extrusion 914 | link: https://madmimi.com/p/abd23c 915 | 916 | - name: Modern Web Dev Set-up for Phaser 3 917 | version: v3 918 | desc: A guide to setting-up a modern web dev environment for Phaser 3 development. 919 | link: https://phaser.io/news/2018/05/modern-web-dev-set-up-for-phaser-3 920 | directlink: https://snowbillr.github.io/blog/2018-04-09-a-modern-web-development-setup-for-phaser-3/ 921 | 922 | - name: FB Instant Games in Phaser 923 | version: v3 924 | desc: A new tutorial on integrating Phaser with the Facebook Instant Games API. 925 | link: https://phaser.io/news/2018/05/fb-instant-games-in-phaser 926 | directlink: http://www.emanueleferonato.com/2018/03/28/how-to-integrate-facebook-instant-games-api-in-your-phaser-game/ 927 | 928 | - name: FB Instant Games Tutorial 2 929 | version: v3 930 | desc: Learn how to display the players name and profile picture in your game. 931 | link: https://phaser.io/news/2018/05/fb-instant-games-tutorial-2 932 | directlink: http://www.emanueleferonato.com/2018/04/05/how-to-integrate-facebook-instant-games-api-in-your-phaser-game-displaying-player-name-and-profile-picture/ 933 | 934 | - name: FB Instant Games Tutorial 3 935 | version: v3 936 | desc: Learn how to save player data in your Facebook Instant Games. 937 | link: https://phaser.io/news/2018/05/fb-instant-games-tutorial-3 938 | directlink: http://www.emanueleferonato.com/2018/04/17/how-to-integrate-facebook-instant-games-api-in-your-phaser-game-saving-game-information/ 939 | 940 | - name: Knife Hit Tutorial Part 1 941 | series: Knife Hit 942 | version: v3 943 | desc: Re-create the game Knife Hit using only tweens and trigonometry in Phaser 3. 944 | link: http://phaser.io/news/2018/05/knife-hit-tutorial-part-1 945 | directlink: http://www.emanueleferonato.com/2018/04/10/build-a-html5-game-like-knife-hit-with-phaser-3-using-only-tweens-and-trigonometry/ 946 | 947 | - name: Knife Hit Tutorial Part 2 948 | series: Knife Hit 949 | version: v3 950 | desc: Re-create the game Knife Hit in Phaser 3. This time adding in hitting other knives. 951 | link: http://phaser.io/news/2018/05/knife-hit-tutorial-part-2 952 | directlink: http://www.emanueleferonato.com/2018/04/18/build-a-html5-game-like-knife-hit-with-phaser-3-using-only-tweens-and-trigonometry-hitting-knives/ 953 | 954 | - name: Socket.io Phaser 3 Tutorial 955 | version: v3 956 | desc: Creating a basic multiplayer game with Socket.io and Phaser 3. 957 | link: http://phaser.io/news/2018/05/socket-io-phaser-3-tutorial 958 | directlink: https://gamedevacademy.org/create-a-basic-multiplayer-game-in-phaser-3-with-socket-io-part-1/?a=13 959 | 960 | - name: Socket.io Phaser 3 Tutorial Part 2 961 | version: v3 962 | desc: In part 2 of creating a multiplayer game with Socket.io and Phaser 3 it adds player removal, input and collectibles. 963 | link: http://phaser.io/news/2018/05/socket-io-phaser-3-tutorial-part-2 964 | directlink: https://gamedevacademy.org/create-a-basic-multiplayer-game-in-phaser-3-with-socket-io-part-2/?a=13 965 | 966 | - name: Phaser 3 Preloader Tutorial 967 | version: v3 968 | desc: How to create a Preloader Scene with progress bar in Phaser 3. 969 | link: http://phaser.io/news/2018/05/phaser-3-preloader-tutorial 970 | directlink: https://gamedevacademy.org/creating-a-preloading-screen-in-phaser-3/?a=13 971 | 972 | - name: 2048 Tutorial Part 1 973 | version: v3 974 | desc: A new tutorial series on re-creating the game 2048 in Phaser 3. 975 | link: http://phaser.io/news/2018/05/2048-tutorial-part-1 976 | directlink: http://www.emanueleferonato.com/2018/03/16/build-a-html5-game-like-2048-using-the-brand-new-phaser-3-2-1/ 977 | 978 | - name: 2048 Tutorial Part 2 979 | version: v3 980 | desc: The second part of tutorial series on re-creating the game 2048 in Phaser 3 adds swipe controls and sprite sheets. 981 | link: http://phaser.io/news/2018/05/2048-tutorial-part-2 982 | directlink: http://www.emanueleferonato.com/2018/03/21/html5-2048-game-made-with-phaser-3-updated-adding-spritesheets-and-swipe-control/ 983 | 984 | Updates: 985 | - Phaser World is back 986 | - New Phaser releases 987 | - Facebook Instant Games Plugin for 3.12 988 | - Scale Manager in 3.12 989 | 990 | Releases: 991 | - 3.7.0 992 | - 3.8.0 993 | - 3.9.0 994 | - 3.10.0 995 | - 3.10.1 996 | - 3.11.0 997 | - 2.10.6 998 | 999 | - Issue: 121 1000 | Date: 05/2018 1001 | Link: https://madmimi.com/p/860f1c 1002 | Tutorials: 1003 | - name: Scenes Tutorial pt. 2 1004 | version: v3 1005 | desc: Learn more about Scene List and Scene Rendering 1006 | link: https://madmimi.com/p/860f1c 1007 | 1008 | - name: Creating native mobile games with Phaser3 and Capacitor 1009 | version: v3 1010 | desc: Build a native mobile app with Typescript, Webpack, and Capacitor 1011 | link: https://phaser.io/news/2018/04/capacitor-and-phaser-tutorial 1012 | directlink: https://www.joshmorony.com/create-native-html5-games-with-phaser-and-capacitor/ 1013 | 1014 | - name: A Sokoban tutorial update 1015 | version: v3 1016 | desc: Build an updated Sokoban game with new features and better efficiency! 1017 | link: https://phaser.io/news/2018/04/sokoban-tutorial-update 1018 | directlink: http://www.emanueleferonato.com/2018/03/08/html5-sokoban-prototype-built-with-phaser-3-updated-to-3-2-0-with-improved-undo-double-tap-control-pixel-art-mode-and-flashing-camera/ 1019 | 1020 | Updates: 1021 | - 3.7.0 development progress 1022 | - Changes coming to Loader Plugin and File Types 1023 | 1024 | - Issue: 120 1025 | Date: 04/2018 1026 | Link: https://madmimi.com/p/2c1afb 1027 | Tutorials: 1028 | - name: Platformer Tutorial 1029 | version: v3 1030 | desc: This guide teaches you how to make a mario-style platformer with Phaser3 and Tiled 1031 | link: https://phaser.io/news/2018/04/phaser-3-platformer-tutorial 1032 | directlink: https://gamedevacademy.org/how-to-make-a-mario-style-platformer-with-phaser-3/?a=13 1033 | 1034 | - name: Matter Physics 1035 | version: v3 1036 | desc: An introduction to the Matter.js physics engine; drop crates on crates! 1037 | link: https://phaser.io/news/2018/04/matter-physics-example 1038 | directlink: http://www.emanueleferonato.com/2018/02/21/your-first-phaser-3-matter-js-physics-example/ 1039 | 1040 | - name: Learn Game Development with Catt Small 1041 | version: v3 1042 | desc: Introduction to Phaser and game development with Catt Small; video lecture 1043 | link: https://phaser.io/news/2018/04/coding-train-tutorial 1044 | directlink: https://blog.codepen.io/2018/04/10/phaser-game-development-with-catt-small/ 1045 | 1046 | - name: Lighting Effects in Phaser3 1047 | version: v3 1048 | desc: Uses normal map texture to provide some depth to your 2D sprites. 1049 | link: https://phaser.io/news/2018/04/light-effects-tutorial 1050 | directlink: https://www.codeandweb.com/texturepacker/tutorials/how-to-create-light-effects-in-phaser3 1051 | 1052 | - name: Mobile Games with Phaser3 and Cordova 1053 | version: v3 1054 | desc: Get a basic game running on a mobile device with Cordova. 1055 | link: https://phaser.io/news/2018/04/mobile-games-tutorial 1056 | directlink: https://gamedevacademy.org/creating-mobile-games-with-phaser-3-and-cordova/?a=13 1057 | 1058 | - name: Recreate "Magick" 1059 | version: v2 1060 | desc: Simple game based on navigating a tilemap with an auto-walking player and dynamic obstacle. 1061 | link: https://phaser.io/news/2018/04/magick-prototype-tutorial 1062 | directlink: http://www.emanueleferonato.com/2018/01/29/build-a-html5-game-like-magick-ipad-game-using-phaser-and-arcade-physics-code-updated-and-new-features-added/ 1063 | 1064 | Updates: 1065 | - Containers, and an introduction! 1066 | - Scene Transitions 1067 | - Docs and Typescript 1068 | 1069 | Releases: 1070 | - 3.6.0 1071 | 1072 | - Issue: 119 1073 | Date: 03/2018 1074 | Link: https://madmimi.com/p/a2dddb 1075 | Tutorials: 1076 | - name: Scenes 1077 | version: v3 1078 | desc: Deep dive into how the Scene system works in Phaser 3 1079 | link: https://madmimi.com/p/a2dddb 1080 | 1081 | - name: How to Create a Game with Phaser 3 1082 | version: v3 1083 | desc: Brief introduction to game and scene lifecycle. Starting from ground zero, comparable to the phaser.io "Making your first Phaser Game" series. 1084 | link: https://phaser.io/news/2018/03/how-to-create-a-game-with-phaser-3 1085 | directlink: https://gamedevacademy.org/phaser-3-tutorial/ 1086 | 1087 | - name: Game distribution APIs 1088 | desc: How to use the GameDistribution.com site to publicize and monetize your work 1089 | link: https://phaser.io/news/2018/03/game-distribution-api-tutorial 1090 | directlink: http://www.emanueleferonato.com/2018/01/23/step-by-step-guide-to-integrate-gamedistribution-api-in-your-html5-game/ 1091 | 1092 | - name: Sprite sheets in Phaser3 1093 | version: v3 1094 | desc: Using TexturePacker to create sprite sheets (texture atlas) and use these in Phaser v3 for display & animation 1095 | link: https://phaser.io/news/2018/03/texturepacker-and-phaser-3-tutorial 1096 | directlink: https://www.codeandweb.com/texturepacker/tutorials/how-to-create-sprite-sheets-for-phaser3 1097 | 1098 | - name: An A to Z guide to pathfinding with Easystar and Phaser 3 1099 | version: v3 1100 | desc: How to use the Easystar library to handle path finding. Also touches on use of Tiled to assign custom tile properties. 1101 | link: https://phaser.io/news/2018/03/pathfinding-and-phaser-3 1102 | directlink: http://www.dynetisgames.com/2018/03/06/pathfinding-easystar-phaser-3/ 1103 | 1104 | Updates: 1105 | - API Docs 1106 | - Typescript Definitions 1107 | - Containers 1108 | 1109 | Releases: 1110 | - 3.3.0 1111 | - 2.10.3 1112 | 1113 | - Issue: 118 1114 | Date: 03/2018 1115 | Link: https://madmimi.com/p/ff68db 1116 | Tutorials: 1117 | - name: Phaser 3 migration Guide, Part 2 1118 | version: v3 1119 | desc: A continuation of the discussion about the differences between v2 and v3. 1120 | link: https://madmimi.com/p/ff68db 1121 | 1122 | - name: Animated Tiles from Tiled 1123 | version: v3 1124 | desc: Provides a plugin, and a guide to using it, that adds support for animated tiles as exported from Tiled. 1125 | link: https://phaser.io/news/2018/03/phaser-3-animated-tiles-plugin 1126 | directlink: https://github.com/nkholski/phaser-animated-tiles 1127 | 1128 | - name: Generating sprite sheets from Photoshop 1129 | version: v2 1130 | desc: Uses TexturePacker and Photoshop's layers to generate a sprite sheet. Contains bare bones demo of how to load the resulting atlas. 1131 | link: https://phaser.io/news/2018/03/psd-parse-and-texturepacker-tutorial 1132 | directlink: https://medium.com/@jeffreyroshan/generate-phaser-spritesheet-from-psd-layers-using-psdparse-texturepacker-6c7a3446a3d3 1133 | 1134 | - name: Recreating "Ballz" in Phaser, Part 3 1135 | version: v2 1136 | desc: Continuation of a full game prototype involving block-breaking multi-ball action 1137 | link: https://phaser.io/news/2018/03/ballz-prototype-tutorial-part-3 1138 | directlink: http://www.emanueleferonato.com/2018/01/16/build-a-html5-game-like-ballz-using-phaser-and-arcade-physics-adding-multiball/ 1139 | 1140 | Updates: 1141 | - Docs 1142 | - Containers 1143 | 1144 | Releases: 1145 | - 3.2.1 1146 | - 2.10.1 1147 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # What is the phaser-discord community? 2 | 3 | Just a bunch of folks who like experiment with gamedev. Mostly we're working 4 | on [Phaser][ph] projects. 5 | 6 | [You're invited][inv], we're friendly! :smile: 7 | 8 | Community rules are over in our [Code of Conduct][coc]. 9 | 10 | # How do I get started with GameDev / Phaser? 11 | 12 | The short version is: build stuff, read things, ask questions. 13 | 14 | We also have a [longer answer][q1] in the FAQ. 15 | 16 | [q1]: https://github.com/phaser-discord/community/blob/master/FAQ.md#im-new-to-phaser-what-should-i-do 17 | 18 | # FAQ 19 | 20 | We started one! It's right next to this file: [FAQ.md](./FAQ.md). 21 | 22 | Read it, make Pull Requests, be awesome. 23 | 24 | # Community Repo 25 | 26 | It seems a reasonable to ask "why does a discord community need a code repo?" 27 | 28 | In part we have an answer in [administration#3][iss-3]. Generally though there 29 | is a lot of energy and talent and our group. We've taught each other a lot and 30 | helping people get through the first steps of Phaser is great... but having 31 | a collection of examples and tutorials that we can refer to and build on over 32 | time would be great. 33 | 34 | And, I mean, if we're going to put that much effort into them why lock them 35 | away in Discord? 36 | 37 | [ph]: https://phaser.io 38 | [inv]: https://discord.gg/phaser 39 | [coc]: code-of-conduct.md 40 | [iss-3]: https://github.com/phaser-discord/administration/issues/3 41 | -------------------------------------------------------------------------------- /RESOURCES.md: -------------------------------------------------------------------------------- 1 | ## this is a list of resources useful in your gamedevelopment with phaser 2 | 3 | * [Tile Extruder][te] this tool helps you extrude your tiles to solve the issue of tile bleeding. 4 | 5 | ![Tile Extruder Example](https://raw.githubusercontent.com/sporadic-labs/tile-extruder/master/images/demo.png "Tile Extruder") 6 | 7 | [te]: https://github.com/sporadic-labs/tile-extruder 8 | -------------------------------------------------------------------------------- /code-of-conduct.md: -------------------------------------------------------------------------------- 1 | # tl;dr 2 | 3 | Be kind, build a nice place. 4 | 5 | # Longer Code of Conduct 6 | 7 | Last Updated: 2018-03-10; v1.0 8 | 9 | This code seeks to outline the guiding principles behind how we want to build 10 | and grow our community. To that end we ask that all members of the community 11 | uphold this code when interacting with each other inside (and even outside!) 12 | the bounds of our group. 13 | 14 | ## Principles / Creed 15 | 16 | As a member of this community we aim to be welcoming and helpful. People in 17 | this group should feel comfortable asking questions and should have a positive 18 | experience learning with us. 19 | 20 | Our community creed: 21 | 22 | 1. I will be welcoming regardless of age, ethnicity, sexuality, gender, 23 | experience, nationality, etc. 24 | 2. I will assume the best intentions of my peers and engage them with a helpful 25 | attitude. 26 | 3. I will remember that everybody starts somewhere and my commentary will 27 | be constructive, attempting to build up and teach instead of belittling 28 | with my answers. 29 | 30 | ## Moderation Pledge 31 | 32 | Ideally we will succeed as a community without any problems. Should that not 33 | be the case the moderation team is available and you should feel free to 34 | ask for help via DM. Currently that team is all volunteer and composed of: 35 | 36 | - @16patsle#7801 37 | - @jdotr#9225 38 | - @Arcan#8543 39 | 40 | When you come to us please provide as much context as you can about the situation 41 | you are reporting. We promise that your identity and report will remain 42 | confidential unless you explicitly grant us permission otherwise. We will 43 | keep you informed about the status of your report and any action taken as a 44 | result. 45 | 46 | # Longest Code of Conduct 47 | 48 | ## Pledge 49 | 50 | In the interest of fostering an open and welcoming environment, we as 51 | community members pledge to making participation a harassment-free experience 52 | for everyone, regardless of age, body size, disability, ethnicity, gender 53 | identity and expression, level of experience, education, socio-economic 54 | status, nationality, personal appearance, race, religion, or sexual 55 | identity and orientation. This is a long but intentionally incomplete list. 56 | 57 | ### For Example... 58 | 59 | Behavior that contributes to creating a positive environment may include: 60 | 61 | * Using welcoming and inclusive language 62 | * Assume good intentions of your peers within the community 63 | * Being respectful of differing viewpoints and experiences 64 | * Gracefully accepting constructive criticism 65 | * Focusing on what is best for the community 66 | * Showing empathy towards other community members 67 | 68 | Behavior that does not contribute to a positive environment may include: 69 | 70 | * The use of sexualized language or imagery and unwelcome sexual attention or 71 | advances 72 | * Trolling, insulting/derogatory comments, and personal or political attacks 73 | * Public or private harassment 74 | * Publishing others' private information, such as a physical or electronic 75 | address, without explicit permission 76 | * Other conduct which could reasonably be considered inappropriate in a 77 | professional setting 78 | * Any action taken in retaliation to a report of a code of conduct violation 79 | including, but not limited to: a continuation of the reported unwelcome 80 | or outside of the community 81 | actions, threats, actions to undermine the perceived reporters status inside 82 | 83 | ## Responsibilities 84 | 85 | Moderators are responsible for clarifying the standards of acceptable 86 | behavior and are expected to take appropriate and fair corrective action in 87 | response to any instances of unacceptable behavior. 88 | 89 | Moderators have the right and responsibility to remove, edit, or reject 90 | comments, commits, code, wiki edits, issues, and other contributions that 91 | are not aligned to this Code of Conduct, or to ban temporarily or permanently 92 | any member for other behaviors that they deem inappropriate, threatening, 93 | offensive, or harmful. 94 | 95 | ## Scope 96 | 97 | This Code of Conduct applies both in server and in public spaces (virtual and 98 | physical) when an individual is representing the community. 99 | 100 | Examples of representing the community include using an official e-mail address, 101 | posting via an official social media account, or acting as an appointed 102 | representative at an online or offline event. 103 | 104 | ## Enforcement 105 | 106 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 107 | reported by contacting a member of the moderation team via DM. All complaints 108 | will be reviewed and investigated and will result in a response that is deemed 109 | necessary and appropriate to the circumstances. The project team is obligated 110 | to maintain confidentiality with regard to the reporter of an incident. Unless 111 | specifically requested each report will be shared with each member of the 112 | moderation team for discussiong prior to any enforcement action. If a member of 113 | the moderation team is the subject of the complaint they will not be involved 114 | in an enforcement decision or be informed of the reporter. 115 | 116 | Project maintainers who do not follow or enforce the Code of Conduct in good 117 | faith may face temporary or permanent repercussions as determined by other 118 | members of the project's leadership. 119 | 120 | Enforcement action typically (but not always) will follow a pattern of warning 121 | and a discussion of why the behavior in question is unacceptable, limited 122 | duration ban, and finally a lifetime ban. Punishment escalation may or may not 123 | be aggregated over disparite instances, e.g., if someone has been warned for 124 | trolling the next disiplinary action for an unrelated offense may be a limited 125 | ban. 126 | 127 | ## Inspiration 128 | 129 | This was adapted from 130 | 131 | - [The Phaser Code of Coduct](https://phaser.io/community/be-nice) 132 | - [Contributor Covenant v1.4](https://www.contributor-covenant.org/version/1/4/code-of-conduct.html) 133 | - [PostgreSQL Code of Conduct](https://wiki.postgresql.org/wiki/Code_of_Conduct) 134 | -------------------------------------------------------------------------------- /phaser-world-parser/README.md: -------------------------------------------------------------------------------- 1 | # phaser-world-parser 2 | 3 | A simple CLI tool to grab games and tutorials from a specificed Phaser World issue and print them to YAML. 4 | This tool just prints out every game and tutorial, it's up to you to do something with them. 5 | 6 | Example usage: 7 | 8 | ```bash 9 | node . https://madmimi.com/p/20be5d > issue.yaml # run from the phaser-world-parser directory 10 | ``` 11 | -------------------------------------------------------------------------------- /phaser-world-parser/index.js: -------------------------------------------------------------------------------- 1 | const jsdom = require('jsdom'); 2 | const { JSDOM } = jsdom; 3 | const { safeDump } = require('js-yaml'); 4 | 5 | async function getDirectLink(url) { 6 | // Load the item's phaser.io news post 7 | const { window } = await JSDOM.fromURL(url, {}).catch(err => { 8 | console.log(err); 9 | return ''; 10 | }); 11 | 12 | // The last link in the news post should be the read more or equivalent 13 | const link = window.document.querySelector('.newsItem > p:last-of-type > a'); 14 | 15 | // Just in case we didn't find any link 16 | if (link && link.href) { 17 | return link.href; 18 | } else { 19 | return ''; 20 | } 21 | } 22 | 23 | async function getItems(url) { 24 | // Load issue from url 25 | const { window } = await JSDOM.fromURL(url, {}).catch(err => { 26 | console.log(err); 27 | }); 28 | 29 | // Get the text content of all games and tutorials 30 | const items = window.document.querySelectorAll( 31 | 'div.combo-left .text-container p' 32 | ); 33 | 34 | // Wait for all processing to complete 35 | return await Promise.all( 36 | // NodeList is only array-like and doesn't have .map 37 | Array.from(items).map(async item => { 38 | // Create object from each issue item 39 | const newItem = {}; 40 | newItem.name = item.querySelector( 41 | 'strong a' 42 | ).textContent; 43 | newItem.desc = item.textContent 44 | // Remove the item name 45 | .replace(newItem.name, '') 46 | // "Staff Pick" is not part of the description 47 | .replace('Staff Pick', '') 48 | .trim(); 49 | newItem.link = item.querySelector( 50 | 'strong a' 51 | ).href; 52 | // We have to load the phaser.io news post link to find the direct link 53 | newItem.directlink = await getDirectLink( 54 | newItem.link 55 | ); 56 | // Arrays need to have content to be formatted the way we want by js-yaml 57 | newItem.tags = ['tag']; 58 | 59 | return newItem; 60 | }) 61 | ); 62 | } 63 | 64 | (async function() { 65 | // Check that a url is specified 66 | if (!process.argv[2]) { 67 | console.warn('Error: Please specify a url'); 68 | return; 69 | } 70 | 71 | const items = await getItems(process.argv[2]); 72 | 73 | // Log to console as yaml 74 | console.log(safeDump(items)); 75 | })(); 76 | -------------------------------------------------------------------------------- /phaser-world-parser/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "phaser-world-parser", 3 | "version": "1.0.0", 4 | "description": "A simple CLI tool to grab games and tutorials from a specificed Phaser World issue and print them to YAML.", 5 | "private": true, 6 | "main": "index.js", 7 | "scripts": { 8 | "test": "echo \"Error: no test specified\" && exit 1" 9 | }, 10 | "author": "Patrick Sletvold ", 11 | "license": "Apache-2.0", 12 | "dependencies": { 13 | "js-yaml": "^3.13.1", 14 | "jsdom": "^16.5.0" 15 | } 16 | } -------------------------------------------------------------------------------- /phaser-world-parser/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | abab@^2.0.3, abab@^2.0.5: 6 | version "2.0.6" 7 | resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" 8 | integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== 9 | 10 | acorn-globals@^6.0.0: 11 | version "6.0.0" 12 | resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" 13 | integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== 14 | dependencies: 15 | acorn "^7.1.1" 16 | acorn-walk "^7.1.1" 17 | 18 | acorn-walk@^7.1.1: 19 | version "7.2.0" 20 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" 21 | integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== 22 | 23 | acorn@^7.1.1: 24 | version "7.4.1" 25 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" 26 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== 27 | 28 | acorn@^8.0.5: 29 | version "8.7.1" 30 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" 31 | integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== 32 | 33 | ajv@^6.12.3: 34 | version "6.12.6" 35 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 36 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 37 | dependencies: 38 | fast-deep-equal "^3.1.1" 39 | fast-json-stable-stringify "^2.0.0" 40 | json-schema-traverse "^0.4.1" 41 | uri-js "^4.2.2" 42 | 43 | argparse@^1.0.7: 44 | version "1.0.10" 45 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 46 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 47 | dependencies: 48 | sprintf-js "~1.0.2" 49 | 50 | asn1@~0.2.3: 51 | version "0.2.4" 52 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" 53 | integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== 54 | dependencies: 55 | safer-buffer "~2.1.0" 56 | 57 | assert-plus@1.0.0, assert-plus@^1.0.0: 58 | version "1.0.0" 59 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 60 | integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= 61 | 62 | asynckit@^0.4.0: 63 | version "0.4.0" 64 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 65 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= 66 | 67 | aws-sign2@~0.7.0: 68 | version "0.7.0" 69 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" 70 | integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= 71 | 72 | aws4@^1.8.0: 73 | version "1.8.0" 74 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" 75 | integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== 76 | 77 | bcrypt-pbkdf@^1.0.0: 78 | version "1.0.2" 79 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" 80 | integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= 81 | dependencies: 82 | tweetnacl "^0.14.3" 83 | 84 | browser-process-hrtime@^1.0.0: 85 | version "1.0.0" 86 | resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" 87 | integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== 88 | 89 | caseless@~0.12.0: 90 | version "0.12.0" 91 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 92 | integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= 93 | 94 | combined-stream@^1.0.6, combined-stream@~1.0.6: 95 | version "1.0.8" 96 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 97 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 98 | dependencies: 99 | delayed-stream "~1.0.0" 100 | 101 | core-util-is@1.0.2: 102 | version "1.0.2" 103 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 104 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 105 | 106 | cssom@^0.4.4: 107 | version "0.4.4" 108 | resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" 109 | integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== 110 | 111 | cssom@~0.3.6: 112 | version "0.3.8" 113 | resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" 114 | integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== 115 | 116 | cssstyle@^2.3.0: 117 | version "2.3.0" 118 | resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" 119 | integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== 120 | dependencies: 121 | cssom "~0.3.6" 122 | 123 | dashdash@^1.12.0: 124 | version "1.14.1" 125 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 126 | integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= 127 | dependencies: 128 | assert-plus "^1.0.0" 129 | 130 | data-urls@^2.0.0: 131 | version "2.0.0" 132 | resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" 133 | integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== 134 | dependencies: 135 | abab "^2.0.3" 136 | whatwg-mimetype "^2.3.0" 137 | whatwg-url "^8.0.0" 138 | 139 | decimal.js@^10.2.1: 140 | version "10.3.1" 141 | resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" 142 | integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== 143 | 144 | deep-is@~0.1.3: 145 | version "0.1.3" 146 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 147 | integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= 148 | 149 | delayed-stream@~1.0.0: 150 | version "1.0.0" 151 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 152 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= 153 | 154 | domexception@^2.0.1: 155 | version "2.0.1" 156 | resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" 157 | integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== 158 | dependencies: 159 | webidl-conversions "^5.0.0" 160 | 161 | ecc-jsbn@~0.1.1: 162 | version "0.1.2" 163 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" 164 | integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= 165 | dependencies: 166 | jsbn "~0.1.0" 167 | safer-buffer "^2.1.0" 168 | 169 | escodegen@^2.0.0: 170 | version "2.0.0" 171 | resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" 172 | integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== 173 | dependencies: 174 | esprima "^4.0.1" 175 | estraverse "^5.2.0" 176 | esutils "^2.0.2" 177 | optionator "^0.8.1" 178 | optionalDependencies: 179 | source-map "~0.6.1" 180 | 181 | esprima@^4.0.0, esprima@^4.0.1: 182 | version "4.0.1" 183 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 184 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 185 | 186 | estraverse@^5.2.0: 187 | version "5.3.0" 188 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" 189 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== 190 | 191 | esutils@^2.0.2: 192 | version "2.0.3" 193 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 194 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 195 | 196 | extend@~3.0.2: 197 | version "3.0.2" 198 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 199 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== 200 | 201 | extsprintf@1.3.0: 202 | version "1.3.0" 203 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" 204 | integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= 205 | 206 | extsprintf@^1.2.0: 207 | version "1.4.0" 208 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" 209 | integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= 210 | 211 | fast-deep-equal@^3.1.1: 212 | version "3.1.3" 213 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 214 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 215 | 216 | fast-json-stable-stringify@^2.0.0: 217 | version "2.1.0" 218 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 219 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 220 | 221 | fast-levenshtein@~2.0.4: 222 | version "2.0.6" 223 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 224 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 225 | 226 | forever-agent@~0.6.1: 227 | version "0.6.1" 228 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 229 | integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= 230 | 231 | form-data@~2.3.2: 232 | version "2.3.3" 233 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" 234 | integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== 235 | dependencies: 236 | asynckit "^0.4.0" 237 | combined-stream "^1.0.6" 238 | mime-types "^2.1.12" 239 | 240 | getpass@^0.1.1: 241 | version "0.1.7" 242 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 243 | integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= 244 | dependencies: 245 | assert-plus "^1.0.0" 246 | 247 | har-schema@^2.0.0: 248 | version "2.0.0" 249 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" 250 | integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= 251 | 252 | har-validator@~5.1.3: 253 | version "5.1.5" 254 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" 255 | integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== 256 | dependencies: 257 | ajv "^6.12.3" 258 | har-schema "^2.0.0" 259 | 260 | html-encoding-sniffer@^2.0.1: 261 | version "2.0.1" 262 | resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" 263 | integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== 264 | dependencies: 265 | whatwg-encoding "^1.0.5" 266 | 267 | http-signature@~1.2.0: 268 | version "1.2.0" 269 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" 270 | integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= 271 | dependencies: 272 | assert-plus "^1.0.0" 273 | jsprim "^1.2.2" 274 | sshpk "^1.7.0" 275 | 276 | iconv-lite@0.4.24: 277 | version "0.4.24" 278 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 279 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 280 | dependencies: 281 | safer-buffer ">= 2.1.2 < 3" 282 | 283 | is-potential-custom-element-name@^1.0.0: 284 | version "1.0.1" 285 | resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" 286 | integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== 287 | 288 | is-typedarray@~1.0.0: 289 | version "1.0.0" 290 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 291 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 292 | 293 | isstream@~0.1.2: 294 | version "0.1.2" 295 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 296 | integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= 297 | 298 | js-yaml@^3.13.1: 299 | version "3.13.1" 300 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" 301 | integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== 302 | dependencies: 303 | argparse "^1.0.7" 304 | esprima "^4.0.0" 305 | 306 | jsbn@~0.1.0: 307 | version "0.1.1" 308 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 309 | integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= 310 | 311 | jsdom@^16.5.0: 312 | version "16.5.0" 313 | resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.5.0.tgz#9e453505600cc5a70b385750d35256f380730cc4" 314 | integrity sha512-QxZH0nmDTnTTVI0YDm4RUlaUPl5dcyn62G5TMDNfMmTW+J1u1v9gCR8WR+WZ6UghAa7nKJjDOFaI00eMMWvJFQ== 315 | dependencies: 316 | abab "^2.0.5" 317 | acorn "^8.0.5" 318 | acorn-globals "^6.0.0" 319 | cssom "^0.4.4" 320 | cssstyle "^2.3.0" 321 | data-urls "^2.0.0" 322 | decimal.js "^10.2.1" 323 | domexception "^2.0.1" 324 | escodegen "^2.0.0" 325 | html-encoding-sniffer "^2.0.1" 326 | is-potential-custom-element-name "^1.0.0" 327 | nwsapi "^2.2.0" 328 | parse5 "6.0.1" 329 | request "^2.88.2" 330 | request-promise-native "^1.0.9" 331 | saxes "^5.0.1" 332 | symbol-tree "^3.2.4" 333 | tough-cookie "^4.0.0" 334 | w3c-hr-time "^1.0.2" 335 | w3c-xmlserializer "^2.0.0" 336 | webidl-conversions "^6.1.0" 337 | whatwg-encoding "^1.0.5" 338 | whatwg-mimetype "^2.3.0" 339 | whatwg-url "^8.0.0" 340 | ws "^7.4.4" 341 | xml-name-validator "^3.0.0" 342 | 343 | json-schema-traverse@^0.4.1: 344 | version "0.4.1" 345 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 346 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 347 | 348 | json-schema@0.2.3: 349 | version "0.2.3" 350 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 351 | integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= 352 | 353 | json-stringify-safe@~5.0.1: 354 | version "5.0.1" 355 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 356 | integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= 357 | 358 | jsprim@^1.2.2: 359 | version "1.4.1" 360 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" 361 | integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= 362 | dependencies: 363 | assert-plus "1.0.0" 364 | extsprintf "1.3.0" 365 | json-schema "0.2.3" 366 | verror "1.10.0" 367 | 368 | levn@~0.3.0: 369 | version "0.3.0" 370 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 371 | integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= 372 | dependencies: 373 | prelude-ls "~1.1.2" 374 | type-check "~0.3.2" 375 | 376 | lodash@^4.17.19, lodash@^4.7.0: 377 | version "4.17.21" 378 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 379 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 380 | 381 | mime-db@1.40.0: 382 | version "1.40.0" 383 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" 384 | integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== 385 | 386 | mime-types@^2.1.12, mime-types@~2.1.19: 387 | version "2.1.24" 388 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" 389 | integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== 390 | dependencies: 391 | mime-db "1.40.0" 392 | 393 | nwsapi@^2.2.0: 394 | version "2.2.0" 395 | resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" 396 | integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== 397 | 398 | oauth-sign@~0.9.0: 399 | version "0.9.0" 400 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" 401 | integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== 402 | 403 | optionator@^0.8.1: 404 | version "0.8.2" 405 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" 406 | integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= 407 | dependencies: 408 | deep-is "~0.1.3" 409 | fast-levenshtein "~2.0.4" 410 | levn "~0.3.0" 411 | prelude-ls "~1.1.2" 412 | type-check "~0.3.2" 413 | wordwrap "~1.0.0" 414 | 415 | parse5@6.0.1: 416 | version "6.0.1" 417 | resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" 418 | integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== 419 | 420 | performance-now@^2.1.0: 421 | version "2.1.0" 422 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" 423 | integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= 424 | 425 | prelude-ls@~1.1.2: 426 | version "1.1.2" 427 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 428 | integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= 429 | 430 | psl@^1.1.28: 431 | version "1.4.0" 432 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.4.0.tgz#5dd26156cdb69fa1fdb8ab1991667d3f80ced7c2" 433 | integrity sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw== 434 | 435 | psl@^1.1.33: 436 | version "1.8.0" 437 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" 438 | integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== 439 | 440 | punycode@^2.1.0, punycode@^2.1.1: 441 | version "2.1.1" 442 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 443 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 444 | 445 | qs@~6.5.2: 446 | version "6.5.3" 447 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" 448 | integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== 449 | 450 | request-promise-core@1.1.4: 451 | version "1.1.4" 452 | resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" 453 | integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== 454 | dependencies: 455 | lodash "^4.17.19" 456 | 457 | request-promise-native@^1.0.9: 458 | version "1.0.9" 459 | resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" 460 | integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== 461 | dependencies: 462 | request-promise-core "1.1.4" 463 | stealthy-require "^1.1.1" 464 | tough-cookie "^2.3.3" 465 | 466 | request@^2.88.2: 467 | version "2.88.2" 468 | resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" 469 | integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== 470 | dependencies: 471 | aws-sign2 "~0.7.0" 472 | aws4 "^1.8.0" 473 | caseless "~0.12.0" 474 | combined-stream "~1.0.6" 475 | extend "~3.0.2" 476 | forever-agent "~0.6.1" 477 | form-data "~2.3.2" 478 | har-validator "~5.1.3" 479 | http-signature "~1.2.0" 480 | is-typedarray "~1.0.0" 481 | isstream "~0.1.2" 482 | json-stringify-safe "~5.0.1" 483 | mime-types "~2.1.19" 484 | oauth-sign "~0.9.0" 485 | performance-now "^2.1.0" 486 | qs "~6.5.2" 487 | safe-buffer "^5.1.2" 488 | tough-cookie "~2.5.0" 489 | tunnel-agent "^0.6.0" 490 | uuid "^3.3.2" 491 | 492 | safe-buffer@^5.0.1, safe-buffer@^5.1.2: 493 | version "5.2.0" 494 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" 495 | integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== 496 | 497 | "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: 498 | version "2.1.2" 499 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 500 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 501 | 502 | saxes@^5.0.1: 503 | version "5.0.1" 504 | resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" 505 | integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== 506 | dependencies: 507 | xmlchars "^2.2.0" 508 | 509 | source-map@~0.6.1: 510 | version "0.6.1" 511 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 512 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 513 | 514 | sprintf-js@~1.0.2: 515 | version "1.0.3" 516 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 517 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 518 | 519 | sshpk@^1.7.0: 520 | version "1.16.1" 521 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" 522 | integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== 523 | dependencies: 524 | asn1 "~0.2.3" 525 | assert-plus "^1.0.0" 526 | bcrypt-pbkdf "^1.0.0" 527 | dashdash "^1.12.0" 528 | ecc-jsbn "~0.1.1" 529 | getpass "^0.1.1" 530 | jsbn "~0.1.0" 531 | safer-buffer "^2.0.2" 532 | tweetnacl "~0.14.0" 533 | 534 | stealthy-require@^1.1.1: 535 | version "1.1.1" 536 | resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" 537 | integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= 538 | 539 | symbol-tree@^3.2.4: 540 | version "3.2.4" 541 | resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" 542 | integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== 543 | 544 | tough-cookie@^2.3.3, tough-cookie@~2.5.0: 545 | version "2.5.0" 546 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" 547 | integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== 548 | dependencies: 549 | psl "^1.1.28" 550 | punycode "^2.1.1" 551 | 552 | tough-cookie@^4.0.0: 553 | version "4.0.0" 554 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" 555 | integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== 556 | dependencies: 557 | psl "^1.1.33" 558 | punycode "^2.1.1" 559 | universalify "^0.1.2" 560 | 561 | tr46@^2.1.0: 562 | version "2.1.0" 563 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" 564 | integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== 565 | dependencies: 566 | punycode "^2.1.1" 567 | 568 | tunnel-agent@^0.6.0: 569 | version "0.6.0" 570 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 571 | integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= 572 | dependencies: 573 | safe-buffer "^5.0.1" 574 | 575 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 576 | version "0.14.5" 577 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 578 | integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= 579 | 580 | type-check@~0.3.2: 581 | version "0.3.2" 582 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 583 | integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= 584 | dependencies: 585 | prelude-ls "~1.1.2" 586 | 587 | universalify@^0.1.2: 588 | version "0.1.2" 589 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 590 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== 591 | 592 | uri-js@^4.2.2: 593 | version "4.4.1" 594 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 595 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 596 | dependencies: 597 | punycode "^2.1.0" 598 | 599 | uuid@^3.3.2: 600 | version "3.3.3" 601 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" 602 | integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== 603 | 604 | verror@1.10.0: 605 | version "1.10.0" 606 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" 607 | integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= 608 | dependencies: 609 | assert-plus "^1.0.0" 610 | core-util-is "1.0.2" 611 | extsprintf "^1.2.0" 612 | 613 | w3c-hr-time@^1.0.2: 614 | version "1.0.2" 615 | resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" 616 | integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== 617 | dependencies: 618 | browser-process-hrtime "^1.0.0" 619 | 620 | w3c-xmlserializer@^2.0.0: 621 | version "2.0.0" 622 | resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" 623 | integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== 624 | dependencies: 625 | xml-name-validator "^3.0.0" 626 | 627 | webidl-conversions@^5.0.0: 628 | version "5.0.0" 629 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" 630 | integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== 631 | 632 | webidl-conversions@^6.1.0: 633 | version "6.1.0" 634 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" 635 | integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== 636 | 637 | whatwg-encoding@^1.0.5: 638 | version "1.0.5" 639 | resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" 640 | integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== 641 | dependencies: 642 | iconv-lite "0.4.24" 643 | 644 | whatwg-mimetype@^2.3.0: 645 | version "2.3.0" 646 | resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" 647 | integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== 648 | 649 | whatwg-url@^8.0.0: 650 | version "8.7.0" 651 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" 652 | integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== 653 | dependencies: 654 | lodash "^4.7.0" 655 | tr46 "^2.1.0" 656 | webidl-conversions "^6.1.0" 657 | 658 | wordwrap@~1.0.0: 659 | version "1.0.0" 660 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 661 | integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= 662 | 663 | ws@^7.4.4: 664 | version "7.5.10" 665 | resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" 666 | integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== 667 | 668 | xml-name-validator@^3.0.0: 669 | version "3.0.0" 670 | resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" 671 | integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== 672 | 673 | xmlchars@^2.2.0: 674 | version "2.2.0" 675 | resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" 676 | integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== 677 | --------------------------------------------------------------------------------