Typescript rewrite
- rewrote using Typescript, which adds typing to the module
- started using node-fetch for better error handling and general stability
- temporarily removed d.js internal sharding, as their official types do not support it the way we used to handle it