hataraku
Version:
An autonomous coding agent for building AI-powered development tools. The name "Hataraku" (働く) means "to work" in Japanese.
52 lines • 1.5 kB
JavaScript
// A helper that creates an async stream with push/end capabilities.
export function createAsyncStream() {
const buffer = [];
let finished = false;
let resolver = null;
const generator = {
async next() {
if (buffer.length > 0) {
return { value: buffer.shift(), done: false };
}
if (finished) {
return { value: undefined, done: true };
}
return new Promise(resolve => {
resolver = resolve;
});
},
async return() {
finished = true;
return { value: undefined, done: true };
},
async throw(err) {
finished = true;
return { value: undefined, done: true };
},
[Symbol.asyncIterator]() { return this; },
// Implement dispose method without using Symbol.asyncDispose
async dispose() {
finished = true;
}
};
const stream = {
push(item) {
if (resolver) {
resolver({ value: item, done: false });
resolver = null;
}
else {
buffer.push(item);
}
},
end() {
finished = true;
if (resolver) {
resolver({ value: undefined, done: true });
resolver = null;
}
}
};
return { ...generator, ...stream };
}
//# sourceMappingURL=async.js.map