Backblaze B2 Storage Adapter for Ghost

When I first migrated to Ghost, one of the few things I had to have was the ability to upload to B2 (Backblaze's ultra-low-cost object storage, similar to S3). There are a few implementations out there, however most are either abandoned or a few years old.

Why didn't I just use an existing S3 adapter?

I could've used an existing S3 storage adapter for Ghost that's been tested and widely deployed. But where's the fun (and learning) in that?

Over the past week or so, I wrote an (almost complete) API library for B2 in JavaScript. Once I was happy with that, I worked on the actual B2 storage adapter for Ghost.

There's still a lot I can learn about JavaScript programming, and writing this B2 storage adapter for Ghost was a great "first-project" to get me started. I'd also like to convert the API client into TypeScript in the future, especially since I enjoyed the type hints in VS Code while working on the initial version.