Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Buffer output support #20

Open
florimondmanca opened this issue Sep 17, 2019 · 1 comment
Open

Buffer output support #20

florimondmanca opened this issue Sep 17, 2019 · 1 comment

Comments

@florimondmanca
Copy link

Hi!

First, thanks for sharing this library. I'm opening this to discuss whether and how spawnAsync could support exposing the raw binary stdout content.

My use case is the following: I am using [pandoc] to convert HTML content to a binary format (.docx in my case). Pandoc outputs the raw docx content to stdout, but since spawnAsync concatenates the output in a string, the binary content is scrambled which makes the docx corrupted (probably because concatenating the binary output to a string force-converts to utf8).

For this reason I couldn't use spawnAsync and had to use the built-in spawn function and basically reimplement error handling and reading from the process stdout stream.

Of course we don't want this change to break backwards compatibility, so SpawnResult.stdout should still contain a string.

What I'd imagine is a new attribute on SpawnResult containing the raw Buffer[] content, e.g.:

process = spawnAsync('pandoc', ['--from=html', '--to=docx']);
process.child.stdin.end("<h1>Hello, world</h1>");
result = await process;
const docxContent = Buffer.concat(result.raw); // <--

I'd be happy to work on this, if this sounds like a reasonable feature to add!

@ide
Copy link
Member

ide commented Sep 17, 2019

This sounds reasonable. I like the idea of adding new properties rather than doing what Node does with spawnSync where stdout/stderr can be either strings or Buffers based on the encoding option. Could you add rawStdout and rawStderr along with tests for both?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants