exceljs / exceljs

Excel Workbook Manager

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Is workbook.commit() still a promise or not

Sjonnie2nd opened this issue · comments

The docs mention:
// Finished the workbook.
workbook.commit().then(function() { /* the stream has been written */ });

I used it like:
book.commit().then(() => response.end())

After I upgraded types/exceljs to ^0.5.2 typescript warned me for commit() not giving back a promise.

So I changed it to:
book.commit();
response.end();
After this things went wrong because response.end() was breaking the stream too early.
After removing response.end() it worked fine. Perhaps commit() called response,end() itself.

So 3 questions:

  • Need the docs be adjusted: commit() no longer brings a response?
  • Or is types/exceljs wrong here?
  • Does commit() really end the response?

@Sjonnie2nd
exceljs seems to provide its own index.d.ts now, where workbook.commit() returns void rather than Promise, as documented and in @types/exceljs

Looking at the code, that looks like an issue with the new integrated index.d.ts, because the underlying function for workbook.commit(), or at least stream.xlsx.workbook-writer.js, still handles the job through promises and returns a resolved promise when the workbook.commit() is done...

@carboneater 's PR has been published as v1.4.12