feat: add commonjs support

@Raynos would this suffice?

Closes #10