mirror of
https://github.com/denoland/deno.git
synced 2024-12-23 15:49:44 -05:00
70 lines
1.4 KiB
JavaScript
70 lines
1.4 KiB
JavaScript
|
// deno-fmt-ignore-file
|
||
|
// deno-lint-ignore-file
|
||
|
|
||
|
// Copyright Joyent and Node contributors. All rights reserved. MIT license.
|
||
|
// Taken from Node 20.11.1
|
||
|
// This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
|
||
|
|
||
|
'use strict';
|
||
|
|
||
|
const common = require('../common');
|
||
|
|
||
|
const {
|
||
|
open,
|
||
|
} = require('fs/promises');
|
||
|
|
||
|
const {
|
||
|
Buffer,
|
||
|
} = require('buffer');
|
||
|
|
||
|
class Source {
|
||
|
async start(controller) {
|
||
|
this.file = await open(__filename);
|
||
|
this.controller = controller;
|
||
|
}
|
||
|
|
||
|
async pull(controller) {
|
||
|
const byobRequest = controller.byobRequest;
|
||
|
const view = byobRequest.view;
|
||
|
|
||
|
const {
|
||
|
bytesRead,
|
||
|
} = await this.file.read({
|
||
|
buffer: view,
|
||
|
offset: view.byteOffset,
|
||
|
length: view.byteLength
|
||
|
});
|
||
|
|
||
|
if (bytesRead === 0) {
|
||
|
await this.file.close();
|
||
|
this.controller.close();
|
||
|
}
|
||
|
|
||
|
byobRequest.respond(bytesRead);
|
||
|
}
|
||
|
|
||
|
get type() { return 'bytes'; }
|
||
|
|
||
|
get autoAllocateChunkSize() { return 1024; }
|
||
|
}
|
||
|
|
||
|
(async () => {
|
||
|
const source = new Source();
|
||
|
const stream = new ReadableStream(source);
|
||
|
|
||
|
const { emitWarning } = process;
|
||
|
|
||
|
process.emitWarning = common.mustNotCall();
|
||
|
|
||
|
try {
|
||
|
const reader = stream.getReader({ mode: 'byob' });
|
||
|
|
||
|
let result;
|
||
|
do {
|
||
|
result = await reader.read(Buffer.alloc(100));
|
||
|
} while (!result.done);
|
||
|
} finally {
|
||
|
process.emitWarning = emitWarning;
|
||
|
}
|
||
|
})().then(common.mustCall());
|