@server/next 0.36.0 → 0.36.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/index.js +14 -13
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -2064,22 +2064,14 @@ async function hash2(password) {
2064
2064
  });
2065
2065
  }
2066
2066
 
2067
- // src/helpers/iterate.ts
2068
- async function iterate(stream, cb) {
2069
- const reader = stream.getReader();
2070
- while (true) {
2071
- const chunk = await reader.read();
2072
- if (chunk.done || !chunk.value) return;
2073
- cb(chunk.value);
2074
- }
2075
- }
2076
-
2077
2067
  // src/helpers/iteratorAsyncToReadable.ts
2078
2068
  function iteratorAsyncToReadable(asyncGenerator) {
2069
+ let cancelled = false;
2079
2070
  return new ReadableStream({
2080
2071
  async pull(controller) {
2081
2072
  try {
2082
2073
  const { value, done } = await asyncGenerator.next();
2074
+ if (cancelled) return;
2083
2075
  if (done) {
2084
2076
  controller.close();
2085
2077
  return;
@@ -2090,8 +2082,10 @@ function iteratorAsyncToReadable(asyncGenerator) {
2090
2082
  controller.error(err);
2091
2083
  }
2092
2084
  },
2093
- cancel() {
2094
- console.log("Stream cancelled");
2085
+ // Return the generator so its `finally {}` runs and releases resources.
2086
+ async cancel(reason) {
2087
+ cancelled = true;
2088
+ await asyncGenerator.return?.(reason);
2095
2089
  }
2096
2090
  });
2097
2091
  }
@@ -2989,7 +2983,14 @@ var Node = async (app) => {
2989
2983
  response.writeHead(out.status || 200, parseHeaders_default(out.headers));
2990
2984
  try {
2991
2985
  if (out.body instanceof ReadableStream) {
2992
- await iterate(out.body, (chunk) => response.write(chunk));
2986
+ const reader = out.body.getReader();
2987
+ response.on("close", () => reader.cancel().catch(() => {
2988
+ }));
2989
+ while (true) {
2990
+ const { value, done } = await reader.read();
2991
+ if (done) break;
2992
+ response.write(value);
2993
+ }
2993
2994
  } else {
2994
2995
  response.write(out.body || "");
2995
2996
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@server/next",
3
- "version": "0.36.0",
3
+ "version": "0.36.1",
4
4
  "description": "A fully-fledged web server with routing, file uploads, sessions, static files, schema validation, websockets, testing, etc.",
5
5
  "homepage": "https://server-js.com/",
6
6
  "repository": "github:franciscop/server-next",