added NPM packaging and workflows; TODO: the commonjs file names and npm names are drifting