hataraku
Version:
An autonomous coding agent for building AI-powered development tools. The name "Hataraku" (働く) means "to work" in Japanese.
55 lines • 1.62 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createAsyncStream = createAsyncStream;
// A helper that creates an async stream with push/end capabilities.
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