Template base para proyectos SaaS multi-tenant. Estructura inicial: - apps/backend (NestJS API) - apps/frontend (React/Vite) - apps/database (PostgreSQL DDL) - docs/ (Documentación) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
24 lines
704 B
TypeScript
24 lines
704 B
TypeScript
import { ReadableStreamLike } from '../types';
|
|
import { isFunction } from './isFunction';
|
|
|
|
export async function* readableStreamLikeToAsyncGenerator<T>(readableStream: ReadableStreamLike<T>): AsyncGenerator<T> {
|
|
const reader = readableStream.getReader();
|
|
try {
|
|
while (true) {
|
|
const { value, done } = await reader.read();
|
|
if (done) {
|
|
return;
|
|
}
|
|
yield value!;
|
|
}
|
|
} finally {
|
|
reader.releaseLock();
|
|
}
|
|
}
|
|
|
|
export function isReadableStreamLike<T>(obj: any): obj is ReadableStreamLike<T> {
|
|
// We don't want to use instanceof checks because they would return
|
|
// false for instances from another Realm, like an <iframe>.
|
|
return isFunction(obj?.getReader);
|
|
}
|