UNPKG

esbuild-gas-plugin

Version:
38 lines (37 loc) 1.17 kB
"use strict"; // Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. // This module is browser compatible. Object.defineProperty(exports, "__esModule", { value: true }); exports.copyN = void 0; const asserts_js_1 = require("../_util/asserts.js"); const DEFAULT_BUFFER_SIZE = 32 * 1024; /** * Copy N size at the most. If read size is lesser than N, then returns nread * @param r Reader * @param dest Writer * @param size Read size */ async function copyN(r, dest, size) { let bytesRead = 0; let buf = new Uint8Array(DEFAULT_BUFFER_SIZE); while (bytesRead < size) { if (size - bytesRead < DEFAULT_BUFFER_SIZE) { buf = new Uint8Array(size - bytesRead); } const result = await r.read(buf); const nread = result ?? 0; bytesRead += nread; if (nread > 0) { let n = 0; while (n < nread) { n += await dest.write(buf.slice(n, nread)); } (0, asserts_js_1.assert)(n === nread, "could not write"); } if (result === null) { break; } } return bytesRead; } exports.copyN = copyN;