Description
js-git is a fantastic project! Having played with the source for a little bit I think it's really well done: it's clearly laid out and it's easy to understand the general architecture. But, it's grown a bit quiet around here, and in the mean time the world of JavaScript has moved forward, leaving the source code of js-git behind.
We now have ES2015, ES2016, ES2017, promises, fetch and many other great features. We also have a lot of new tools, like webpack and typescript, which help with developing and using libraries.
I want to use js-git, but I also want to write it in a modern dialect of JavaScript using the tools available, so I have started a general rewrite of js-git (into es-git, as in EcmaScript-git). This is based on discussion earlier about using promises and async/await, but when I started that I saw that there were several other small things to improve.
I'm writing es-git in TypeScript, since it supports pretty much all the features of ES2017 (and some proposed features), but I will compile it both to ES2017 and to ES5, so that consumers of the package can use it based on their preference. I am removing some legacy support though, for example WebSQL and the fallback deferral code, and replacing them with more modern (and well supported) features, like IndexedDB and promises.
While I'm rewriting this to get it up to a modern standard, it's not just about new and shiny all the things. Async/await lets us write the same code in much fewer lines, making it clearer what is going on. TypeScript is great for libraries, as IDEs can now give very good feedback, and it's great for maintainers as refactoring becomes easier.
Luckily for me the code in js-git is pretty straight forward to convert. I'm not sure when I will have a working version, or how much I will have to leave behind, but when it's gotten to a usable point i will probably publish it as a separate nuget package, as a fork of js-git, since there will be a lot of breaking changes. That is, unless you are interested in merging it back into js-git.
Anyways, I mention this because I really like this project, and I'm sad that it's so quiet around here. I really need git in JavaScript in the browser, and the small experiments I've done show that it is working well enough for me. So I want to help out 😃