byte-rw
Version:
Byte reader/writer for buffers and streams in typescript/javascript
40 lines (39 loc) • 1.92 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import { DataViewByteWriterAsyncChunked } from "../dataview/index.js";
export class StreamByteWriter extends DataViewByteWriterAsyncChunked {
constructor(stream, littleEndian = true, defaultChunkSize) {
var _a;
super(littleEndian, defaultChunkSize);
this.stream = stream;
(_a = this.writer) !== null && _a !== void 0 ? _a : (this.writer = stream.getWriter());
if (defaultChunkSize === undefined && this.writer.desiredSize)
this.defaultChunkSize = this.writer.desiredSize;
}
complete() {
const _super = Object.create(null, {
complete: { get: () => super.complete }
});
return __awaiter(this, void 0, void 0, function* () {
yield _super.complete.call(this);
yield this.writer.ready;
yield this.writer.close();
});
}
save() {
return __awaiter(this, void 0, void 0, function* () {
const view = this._byteOffset === this._dataview.byteLength ?
this._dataview :
new DataView(this._dataview.buffer, this._dataview.byteOffset, this._byteOffset);
yield this.writer.write(view);
return this._byteOffset;
});
}
}