Yeah, I figured tree shaking should take out the unused code, but that didn't seem to be the case. Also, I foresee there being far fewer developers using the node websocket portion of the library than the web browser focused stuff, so I'm fine splitting those off into their own module anyways. Means I can update node dependencies without having to update the main library, with only minimal build work. I've got a small CLI interfaces for a native buttplug websocket server with bluetooth capabilities that I use for my own testing, I'll be posting that soon, might be a good example of how I throw this stuff together.
I'm certainly open for pull requests and help, but patches will need to be in Typescript. I can't split the code base between shaped-typing and unannotated JS, and the typing, while more implied instead of enforced, is important for me to be able to read and understand code flow quickly, especially with typescript's nice union types. I write my examples in es6/es7 because I know a lot of users outside of the library will be using those (though Playground, Syncydink, and other applications I write are also TypeScript), but keeping the core library consistent is very important to me. That said, I'm happy to answer questions and offer advice, and TypeScript is a superset of JS, so if you're familiar with es6/7, there may not be too much to learn on top of it.