An HTML5 Canvas Game Engine Written in Typescript