fix: hashtag extraction and make remote links absolute
This commit is contained in:
@@ -30,3 +30,49 @@ export const fixRenderedMarkdown = (content: string) => {
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
export async function fetchStream(url: string, cb: (chunk: string) => void) {
|
||||
const response = await fetch(url);
|
||||
const reader = response?.body?.getReader();
|
||||
if (reader) {
|
||||
while (true) {
|
||||
const { done, value } = await reader.read();
|
||||
if (done) return;
|
||||
const data = new TextDecoder().decode(value);
|
||||
data
|
||||
.split("$")
|
||||
.filter((d) => d && d.length)
|
||||
.map((d) => cb(Array.isArray(d) ? d[0] : d));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export const createStreamResponse = () => {
|
||||
let controller: ReadableStreamController<ArrayBufferView>;
|
||||
const body = new ReadableStream({
|
||||
start(cont) {
|
||||
controller = cont;
|
||||
},
|
||||
});
|
||||
|
||||
const response = new Response(body, {
|
||||
headers: {
|
||||
"content-type": "text/plain",
|
||||
"x-content-type-options": "nosniff",
|
||||
},
|
||||
});
|
||||
|
||||
function cancel() {
|
||||
controller.close();
|
||||
}
|
||||
|
||||
function enqueue(chunk: string) {
|
||||
controller?.enqueue(new TextEncoder().encode("$" + chunk));
|
||||
}
|
||||
|
||||
return {
|
||||
response,
|
||||
cancel,
|
||||
enqueue,
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user