function writeFileHandle()

in tools/node-hermes/nodelib/internal/fs/promises.js [447:587]


function writeFileHandle(filehandle, data, signal, encoding) {
  var _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, _value, buf, toWrite, _remaining, writeSize, _await$write, bytesWritten, remaining, _await$write2, _bytesWritten;

  return regeneratorRuntime.async(function writeFileHandle$(_context) {
    while (1) {
      switch (_context.prev = _context.next) {
        case 0:
          checkAborted(signal);

          if (!isCustomIterable(data)) {
            _context.next = 48;
            break;
          }

          _iteratorNormalCompletion = true;
          _didIteratorError = false;
          _context.prev = 4;
          _iterator = _asyncIterator(data);

        case 6:
          _context.next = 8;
          return regeneratorRuntime.awrap(_iterator.next());

        case 8:
          _step = _context.sent;
          _iteratorNormalCompletion = _step.done;
          _context.next = 12;
          return regeneratorRuntime.awrap(_step.value);

        case 12:
          _value = _context.sent;

          if (_iteratorNormalCompletion) {
            _context.next = 31;
            break;
          }

          buf = _value;
          checkAborted(signal);
          toWrite = isArrayBufferView(buf) ? buf : Buffer.from(buf, encoding || 'utf8');
          _remaining = toWrite.byteLength;

        case 18:
          if (!(_remaining > 0)) {
            _context.next = 28;
            break;
          }

          writeSize = MathMin(kWriteFileMaxChunkSize, _remaining);
          _context.next = 22;
          return regeneratorRuntime.awrap(_write(filehandle, toWrite, toWrite.byteLength - _remaining, writeSize));

        case 22:
          _await$write = _context.sent;
          bytesWritten = _await$write.bytesWritten;
          _remaining -= bytesWritten;
          checkAborted(signal);
          _context.next = 18;
          break;

        case 28:
          _iteratorNormalCompletion = true;
          _context.next = 6;
          break;

        case 31:
          _context.next = 37;
          break;

        case 33:
          _context.prev = 33;
          _context.t0 = _context["catch"](4);
          _didIteratorError = true;
          _iteratorError = _context.t0;

        case 37:
          _context.prev = 37;
          _context.prev = 38;

          if (!(!_iteratorNormalCompletion && _iterator["return"] != null)) {
            _context.next = 42;
            break;
          }

          _context.next = 42;
          return regeneratorRuntime.awrap(_iterator["return"]());

        case 42:
          _context.prev = 42;

          if (!_didIteratorError) {
            _context.next = 45;
            break;
          }

          throw _iteratorError;

        case 45:
          return _context.finish(42);

        case 46:
          return _context.finish(37);

        case 47:
          return _context.abrupt("return");

        case 48:
          data = new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
          remaining = data.byteLength;

          if (!(remaining === 0)) {
            _context.next = 52;
            break;
          }

          return _context.abrupt("return");

        case 52:
          checkAborted(signal);
          _context.next = 55;
          return regeneratorRuntime.awrap(_write(filehandle, data, 0, MathMin(kWriteFileMaxChunkSize, data.byteLength)));

        case 55:
          _await$write2 = _context.sent;
          _bytesWritten = _await$write2.bytesWritten;
          remaining -= _bytesWritten;
          data = new Uint8Array(data.buffer, data.byteOffset + _bytesWritten, data.byteLength - _bytesWritten);

        case 59:
          if (remaining > 0) {
            _context.next = 52;
            break;
          }

        case 60:
        case "end":
          return _context.stop();
      }
    }
  }, null, null, [[4, 33, 37, 47], [38,, 42, 46]], Promise);
}