Files
url_tracker_tool/node_modules/peek-readable/lib/WebStreamReader.js
Andrei 58f8093689 Rebrand from 'Redirect Intelligence v2' to 'URL Tracker Tool V2' throughout UI
- Updated all component headers and documentation
- Changed navbar and footer branding
- Updated homepage hero badge
- Modified page title in index.html
- Simplified footer text to 'Built with ❤️'
- Consistent V2 capitalization across all references
2025-08-19 19:12:23 +00:00

35 lines
1.1 KiB
JavaScript

import { EndOfStreamError } from './EndOfStreamError.js';
export { EndOfStreamError } from './EndOfStreamError.js';
import { AbstractStreamReader } from "./AbstractStreamReader.js";
/**
* Read from a WebStream
* Reference: https://nodejs.org/api/webstreams.html#class-readablestreambyobreader
*/
export class WebStreamReader extends AbstractStreamReader {
constructor(stream) {
super();
this.reader = stream.getReader({ mode: 'byob' });
}
async readFromStream(buffer, offset, length) {
if (this.endOfStream) {
throw new EndOfStreamError();
}
const result = await this.reader.read(new Uint8Array(length));
if (result.done) {
this.endOfStream = result.done;
}
if (result.value) {
buffer.set(result.value, offset);
return result.value.byteLength;
}
return 0;
}
abort() {
return this.reader.cancel(); // Signals a loss of interest in the stream by a consumer
}
async close() {
await this.abort();
this.reader.releaseLock();
}
}