From 72bedc87a9d62744b4cebc7d9dd8da1476734001 Mon Sep 17 00:00:00 2001 From: ssube Date: Sun, 16 Jun 2019 16:35:43 -0500 Subject: [PATCH] fix(source): wait for output write to finish --- src/source.ts | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/src/source.ts b/src/source.ts index 33faa5c..15ef105 100644 --- a/src/source.ts +++ b/src/source.ts @@ -1,23 +1,37 @@ -import { promisify } from 'util'; import { readFile, writeFile } from 'fs'; +import { isNil } from 'lodash'; +import { promisify } from 'util'; +export const FILE_ENCODING = 'utf-8'; export const readFileSync = promisify(readFile); export const writeFileSync = promisify(writeFile); export async function loadSource(path: string): Promise { if (path === '-') { - return readFileSync(0, 'utf-8'); + return readFileSync(0, { + encoding: FILE_ENCODING, + }); } else { - return readFileSync(path, 'utf-8'); + return readFileSync(path, { + encoding: FILE_ENCODING, + }); } } export async function writeSource(path: string, data: string): Promise { if (path === '-') { - process.stdout.write(data); + return new Promise((res, rej) => { + process.stdout.write(data, (err: Error | null | undefined) => { + if (isNil(err)) { + res(); + } else { + rej(err); + } + }); + }); } else { return writeFileSync(path, data, { - encoding: 'utf-8', + encoding: FILE_ENCODING, }); } }