withspectrum / callback-to-async-iterator

Turn any callback-based listener into an async iterator.
MIT License
96 stars 12 forks source link

[SUGGESTION] Use a standard CommonJS export #28

Open WaldoJeffers opened 5 years ago

WaldoJeffers commented 5 years ago

Currently, callback-to-async-iterator is written using ES6 modules, and transpiled to CommonJS using babel-plugin-transform-modules-commonjs.

The export in the result file in the dist folder looks like this:

exports.default = callbackToAsyncIterator;

which means in a standard CommonJS environment, you have to write something like this to use it:

const callbackToAsyncIterator = require('callback-to-async-iterator').default

This is a bit unexpected, because I think this module is primarily targeted at NodeJS environments, and the docs don't mention it.

I would suggest using regular CommonJS exports in the source code, to make sure the exported dist/index.js file looks like this:

module.exports = callbackToAsyncIterator

This will probably not make any differences for people using it in a ES6 module environment, because tools like Babel or Webpack usually interop quite nicely with CommonJS modules.

What are your thoughts on this? I can work on a PR if that sounds good

laggingreflex commented 2 years ago

I'm importing this as an ES6 module natively in Node 17 yet I still seem to have to use the "default" named export…

import asyncify from 'callback-to-async-iterator'

asyncify(cb)
TypeError: asyncify is not a function 
// have to use asyncify.default