use-acp 0.1.4 → 0.1.5
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streams.d.ts","sourceRoot":"","sources":["../../src/components/streams.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtE,eAAO,MAAM,qBAAqB;;
|
|
1
|
+
{"version":3,"file":"streams.d.ts","sourceRoot":"","sources":["../../src/components/streams.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtE,eAAO,MAAM,qBAAqB;;qBAqF220oC,CAAC;;;;;CArFh10oC,CAAC;AAC/D,eAAO,MAAM,qBAAqB;;;CAA4B,CAAC;AAE/D,wBAAgB,kBAAkB,IAAI,OAAO,CAK5C;AAED,MAAM,WAAW,kBAAmB,SAAQ,cAAc,CAAC,UAAU,CAAC;IACpE,MAAM,EAAE,MAAM,cAAc,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,cAAc,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;CAC9E;AAED,wBAAgB,6BAA6B,CAAC,EAAE,EAAE,SAAS,GAAG,cAAc,CAAC,UAAU,CAAC,CAcvF;AAED,wBAAgB,6BAA6B,CAAC,EAAE,EAAE,SAAS,GAAG,kBAAkB,CAgD/E"}
|
|
@@ -46,48 +46,21 @@ export function createWebSocketReadableStream(ws) {
|
|
|
46
46
|
ws.close();
|
|
47
47
|
},
|
|
48
48
|
});
|
|
49
|
-
//
|
|
50
|
-
const chunks = [];
|
|
51
|
-
let streamEnded = false;
|
|
52
|
-
let readerStarted = false;
|
|
53
|
-
// Start reading the stream once
|
|
54
|
-
const startReading = () => {
|
|
55
|
-
if (readerStarted)
|
|
56
|
-
return;
|
|
57
|
-
readerStarted = true;
|
|
58
|
-
const reader = stream.getReader();
|
|
59
|
-
(async () => {
|
|
60
|
-
try {
|
|
61
|
-
while (true) {
|
|
62
|
-
const { value, done } = await reader.read();
|
|
63
|
-
if (done) {
|
|
64
|
-
streamEnded = true;
|
|
65
|
-
break;
|
|
66
|
-
}
|
|
67
|
-
chunks.push(value);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
finally {
|
|
71
|
-
reader.releaseLock();
|
|
72
|
-
}
|
|
73
|
-
})().catch(console.error);
|
|
74
|
-
};
|
|
49
|
+
// Add .values() and [Symbol.asyncIterator]
|
|
75
50
|
const values = async function* () {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
51
|
+
const reader = stream.getReader();
|
|
52
|
+
try {
|
|
53
|
+
while (true) {
|
|
54
|
+
const { value, done } = await reader.read();
|
|
55
|
+
if (done)
|
|
56
|
+
break;
|
|
57
|
+
yield value;
|
|
83
58
|
}
|
|
84
|
-
// If stream ended, we're done
|
|
85
|
-
if (streamEnded)
|
|
86
|
-
break;
|
|
87
|
-
// Wait a bit for more chunks
|
|
88
|
-
await new Promise((resolve) => setTimeout(resolve, 10));
|
|
89
59
|
}
|
|
90
|
-
|
|
60
|
+
finally {
|
|
61
|
+
reader.releaseLock();
|
|
62
|
+
}
|
|
63
|
+
return undefined;
|
|
91
64
|
};
|
|
92
65
|
// Attach methods
|
|
93
66
|
stream.values = values;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streams.js","sourceRoot":"","sources":["../../src/components/streams.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,qBAAqB,GAAG,UAAU,CAAC,cAAc,CAAC;AAC/D,MAAM,CAAC,MAAM,qBAAqB,GAAG,UAAU,CAAC,cAAc,CAAC;AAE/D,MAAM,UAAU,kBAAkB;IAChC,OAAO,CACL,OAAO,UAAU,CAAC,cAAc,KAAK,WAAW;QAChD,OAAO,UAAU,CAAC,cAAc,KAAK,WAAW,CACjD,CAAC;AACJ,CAAC;AAOD,MAAM,UAAU,6BAA6B,CAAC,EAAa;IACzD,OAAO,IAAI,qBAAqB,CAAC;QAC/B,KAAK,CAAC,KAAiB;YACrB,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;gBACrC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;QACD,KAAK;YACH,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,CAAC;QACD,KAAK;YACH,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,EAAa;IACzD,MAAM,MAAM,GAAG,IAAI,qBAAqB,CAAa;QACnD,KAAK,CAAC,UAAU;YACd,EAAE,CAAC,SAAS,GAAG,CAAC,KAAK,EAAE,EAAE;gBACvB,IAAI,KAAK,CAAC,IAAI,YAAY,WAAW,EAAE,CAAC;oBACtC,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gBACjD,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,YAAY,UAAU,EAAE,CAAC;oBAC5C,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACjC,CAAC;qBAAM,CAAC;oBACN,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;oBAClC,qDAAqD;oBACrD,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC,CAAC;YAEF,EAAE,CAAC,OAAO,GAAG,GAAG,EAAE;gBAChB,UAAU,CAAC,KAAK,EAAE,CAAC;YACrB,CAAC,CAAC;YAEF,EAAE,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;gBACrB,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC,CAAC;QACJ,CAAC;QACD,MAAM;YACJ,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,CAAC;KACF,CAAuB,CAAC;IAEzB,
|
|
1
|
+
{"version":3,"file":"streams.js","sourceRoot":"","sources":["../../src/components/streams.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,qBAAqB,GAAG,UAAU,CAAC,cAAc,CAAC;AAC/D,MAAM,CAAC,MAAM,qBAAqB,GAAG,UAAU,CAAC,cAAc,CAAC;AAE/D,MAAM,UAAU,kBAAkB;IAChC,OAAO,CACL,OAAO,UAAU,CAAC,cAAc,KAAK,WAAW;QAChD,OAAO,UAAU,CAAC,cAAc,KAAK,WAAW,CACjD,CAAC;AACJ,CAAC;AAOD,MAAM,UAAU,6BAA6B,CAAC,EAAa;IACzD,OAAO,IAAI,qBAAqB,CAAC;QAC/B,KAAK,CAAC,KAAiB;YACrB,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;gBACrC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;QACD,KAAK;YACH,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,CAAC;QACD,KAAK;YACH,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,EAAa;IACzD,MAAM,MAAM,GAAG,IAAI,qBAAqB,CAAa;QACnD,KAAK,CAAC,UAAU;YACd,EAAE,CAAC,SAAS,GAAG,CAAC,KAAK,EAAE,EAAE;gBACvB,IAAI,KAAK,CAAC,IAAI,YAAY,WAAW,EAAE,CAAC;oBACtC,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gBACjD,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,YAAY,UAAU,EAAE,CAAC;oBAC5C,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACjC,CAAC;qBAAM,CAAC;oBACN,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;oBAClC,qDAAqD;oBACrD,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC,CAAC;YAEF,EAAE,CAAC,OAAO,GAAG,GAAG,EAAE;gBAChB,UAAU,CAAC,KAAK,EAAE,CAAC;YACrB,CAAC,CAAC;YAEF,EAAE,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;gBACrB,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC,CAAC;QACJ,CAAC;QACD,MAAM;YACJ,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,CAAC;KACF,CAAuB,CAAC;IAEzB,2CAA2C;IAC3C,MAAM,MAAM,GAAG,KAAK,SAAS,CAAC;QAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,OAAO,IAAI,EAAE,CAAC;gBACZ,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC5C,IAAI,IAAI;oBAAE,MAAM;gBAChB,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,iBAAiB;IACjB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC;IAEtC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,6BAA6B;AAC7B,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;IAC1B,OAAO,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;AACxF,CAAC","sourcesContent":["/**\n * Browser-compatible ReadableStream and WritableStream utilities\n * Uses native browser Streams API instead of Node.js streams\n */\nimport type { ReadableStream, WritableStream } from \"node:stream/web\";\n\nexport const BrowserReadableStream = globalThis.ReadableStream;\nexport const BrowserWritableStream = globalThis.WritableStream;\n\nexport function isStreamsSupported(): boolean {\n return (\n typeof globalThis.ReadableStream !== \"undefined\" &&\n typeof globalThis.WritableStream !== \"undefined\"\n );\n}\n\nexport interface NodeReadableStream extends ReadableStream<Uint8Array> {\n values: () => AsyncGenerator<Uint8Array, undefined, unknown>;\n [Symbol.asyncIterator]: () => AsyncGenerator<Uint8Array, undefined, unknown>;\n}\n\nexport function createWebSocketWritableStream(ws: WebSocket): WritableStream<Uint8Array> {\n return new BrowserWritableStream({\n write(chunk: Uint8Array) {\n if (ws.readyState === WebSocket.OPEN) {\n ws.send(chunk);\n }\n },\n close() {\n ws.close();\n },\n abort() {\n ws.close();\n },\n });\n}\n\nexport function createWebSocketReadableStream(ws: WebSocket): NodeReadableStream {\n const stream = new BrowserReadableStream<Uint8Array>({\n start(controller) {\n ws.onmessage = (event) => {\n if (event.data instanceof ArrayBuffer) {\n controller.enqueue(new Uint8Array(event.data));\n } else if (event.data instanceof Uint8Array) {\n controller.enqueue(event.data);\n } else {\n const encoder = new TextEncoder();\n // HACK append newline b/c of a bug in the ACP server\n controller.enqueue(encoder.encode(`${event.data}\\n`));\n }\n };\n\n ws.onclose = () => {\n controller.close();\n };\n\n ws.onerror = (error) => {\n controller.error(error);\n };\n },\n cancel() {\n ws.close();\n },\n }) as NodeReadableStream;\n\n // Add .values() and [Symbol.asyncIterator]\n const values = async function* () {\n const reader = stream.getReader();\n try {\n while (true) {\n const { value, done } = await reader.read();\n if (done) break;\n yield value;\n }\n } finally {\n reader.releaseLock();\n }\n return undefined;\n };\n\n // Attach methods\n stream.values = values;\n stream[Symbol.asyncIterator] = values;\n\n return stream;\n}\n\n// Polyfill check and warning\nif (!isStreamsSupported()) {\n console.warn(\"Streams API not supported in this browser. Consider using a polyfill.\");\n}\n"]}
|