shariq-pi-extensions 0.2.12 → 0.2.13

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.
@@ -63,13 +63,23 @@ export function createFactoryResponsesWebSocketFetch(options: FactoryWebSocketFe
63
63
  });
64
64
 
65
65
  const abort = () => {
66
- socket.close();
67
- void writer.abort(new Error("Factory request was aborted"));
66
+ init?.signal?.removeEventListener("abort", abort);
67
+ try {
68
+ socket.close();
69
+ } catch {
70
+ // Ignore socket close errors during abort.
71
+ }
72
+ void writer.abort(init?.signal?.reason || new Error("Factory request was aborted")).catch(() => undefined);
68
73
  if (!settled) {
69
74
  settled = true;
70
- reject(new Error("Factory request was aborted"));
75
+ reject(init?.signal?.reason || new Error("Factory request was aborted"));
71
76
  }
72
77
  };
78
+
79
+ if (init?.signal?.aborted) {
80
+ abort();
81
+ return;
82
+ }
73
83
  init?.signal?.addEventListener("abort", abort, { once: true });
74
84
 
75
85
  socket.once("open", () => {
@@ -86,11 +96,11 @@ export function createFactoryResponsesWebSocketFetch(options: FactoryWebSocketFe
86
96
 
87
97
  socket.on("message", (data: RawData) => {
88
98
  const text = data.toString();
89
- void writer.write(encoder.encode(`data: ${text}\n\n`));
99
+ void writer.write(encoder.encode(`data: ${text}\n\n`)).catch(() => undefined);
90
100
  try {
91
101
  const event = JSON.parse(text) as { type?: string };
92
102
  if (event.type === "response.completed" || event.type === "response.failed" || event.type === "error") {
93
- void writer.close();
103
+ void writer.close().catch(() => undefined);
94
104
  socket.close();
95
105
  }
96
106
  } catch {
@@ -99,6 +109,7 @@ export function createFactoryResponsesWebSocketFetch(options: FactoryWebSocketFe
99
109
  });
100
110
 
101
111
  socket.once("unexpected-response", (_request, response) => {
112
+ init?.signal?.removeEventListener("abort", abort);
102
113
  const chunks: Buffer[] = [];
103
114
  response.on("data", (chunk: Buffer) => chunks.push(chunk));
104
115
  response.on("end", () => {
@@ -114,11 +125,12 @@ export function createFactoryResponsesWebSocketFetch(options: FactoryWebSocketFe
114
125
  });
115
126
 
116
127
  socket.once("error", (error) => {
128
+ init?.signal?.removeEventListener("abort", abort);
117
129
  if (!settled) {
118
130
  settled = true;
119
131
  reject(error);
120
132
  } else if (opened) {
121
- void writer.abort(error);
133
+ void writer.abort(error).catch(() => undefined);
122
134
  }
123
135
  });
124
136
  socket.once("close", () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shariq-pi-extensions",
3
- "version": "0.2.12",
3
+ "version": "0.2.13",
4
4
  "description": "Cross-platform extension suite for the Pi coding agent.",
5
5
  "license": "MIT",
6
6
  "author": "Shariq Riaz",