|
@@ -996,10 +996,26 @@ class ExportService {
|
|
|
// TODO(MR): Productionalize
|
|
|
if (isDevBuild) {
|
|
|
console.log({ a: "will send req", updatedFileStream });
|
|
|
+ // The duplex parameter needs to be set to 'half' when
|
|
|
+ // streaming requests.
|
|
|
+ //
|
|
|
+ // Currently browsers, and specifically in our case,
|
|
|
+ // since this code runs only within our desktop
|
|
|
+ // (Electron) app, Chromium, don't support 'full' duplex
|
|
|
+ // mode (i.e. streaming both the request and the
|
|
|
+ // response).
|
|
|
+ //
|
|
|
+ // https://developer.chrome.com/docs/capabilities/web-apis/fetch-streaming-requests
|
|
|
+ //
|
|
|
+ // In another twist, the TypeScript libdom.d.ts does not
|
|
|
+ // include the "duplex" parameter, so we need to cast to
|
|
|
+ // get TypeScript to let this code through. e.g. see
|
|
|
+ // https://github.com/node-fetch/node-fetch/issues/1769
|
|
|
const req = new Request("stream://foo", {
|
|
|
method: "POST",
|
|
|
body: updatedFileStream,
|
|
|
- });
|
|
|
+ duplex: "half",
|
|
|
+ } as unknown as RequestInit);
|
|
|
const res = await fetch(req);
|
|
|
console.log({ a: "got res", res });
|
|
|
}
|