Node.js v25.0.0 ドキュメンテーション
- Node.js v25.0.0
-
目次
- Web Streams API
- 概要
- API
- クラス:
ReadableStreamnew ReadableStream([underlyingSource [, strategy]])readableStream.lockedreadableStream.cancel([reason])readableStream.getReader([options])readableStream.pipeThrough(transform[, options])readableStream.pipeTo(destination[, options])readableStream.tee()readableStream.values([options])- 非同期イテレーション
postMessage()を使った転送
ReadableStream.from(iterable)- クラス:
ReadableStreamDefaultReader - クラス:
ReadableStreamBYOBReader - クラス:
ReadableStreamDefaultController - クラス:
ReadableByteStreamController - クラス:
ReadableStreamBYOBRequest - クラス:
WritableStream - クラス:
WritableStreamDefaultWriternew WritableStreamDefaultWriter(stream)writableStreamDefaultWriter.abort([reason])writableStreamDefaultWriter.close()writableStreamDefaultWriter.closedwritableStreamDefaultWriter.desiredSizewritableStreamDefaultWriter.readywritableStreamDefaultWriter.releaseLock()writableStreamDefaultWriter.write([chunk])
- クラス:
WritableStreamDefaultController - クラス:
TransformStream - クラス:
TransformStreamDefaultController - クラス:
ByteLengthQueuingStrategy - クラス:
CountQueuingStrategy - クラス:
TextEncoderStream - クラス:
TextDecoderStream - クラス:
CompressionStream - クラス:
DecompressionStream - ユーティリティコンシューマー
- クラス:
- Web Streams API
-
索引
- アサーションテスト
- 非同期コンテキストの追跡
- Async hooks
- Buffer
- C++アドオン
- Node-API を使用した C/C++ アドオン
- C++ embedder API
- 子プロセス
- Cluster
- コマンドラインオプション
- Console
- Crypto
- Debugger
- 非推奨のAPI
- Diagnostics Channel
- DNS
- Domain
- 環境変数
- エラー
- Events
- ファイルシステム
- Globals
- HTTP
- HTTP/2
- HTTPS
- Inspector
- 国際化
- モジュール: CommonJS モジュール
- モジュール: ECMAScript モジュール
- モジュール:
node:moduleAPI - モジュール: パッケージ
- モジュール: TypeScript
- Net
- OS
- Path
- Performance hooks
- パーミッション
- Process
- Punycode
- クエリストリング
- Readline
- REPL
- レポート
- 単一実行可能ファイルアプリケーション
- SQLite
- Stream
- String decoder
- テストランナー
- タイマー
- TLS/SSL
- トレースイベント
- TTY
- UDP/datagram
- URL
- ユーティリティ
- V8
- VM
- WASI
- Web Crypto API
- Web Streams API
- ワーカースレッド
- Zlib
- 他のバージョン
- オプション
Web Streams API#
WHATWG Streams Standard の実装です。
概要#
WHATWG Streams Standard (または "web streams") は、ストリーミングデータを扱うためのAPIを定義します。これはNode.jsのStreams APIと似ていますが、後発であり、多くのJavaScript環境でストリーミングデータを扱うための「標準」APIとなっています。
主に3種類のオブジェクトがあります
ReadableStream- ストリーミングデータのソースを表します。WritableStream- ストリーミングデータの宛先を表します。TransformStream- ストリーミングデータを変換するためのアルゴリズムを表します。
ReadableStream の例#
この例では、現在の performance.now() タイムスタンプを1秒ごとに永久にプッシュする単純な ReadableStream を作成します。ストリームからデータを読み取るために非同期イテラブルが使用されます。
import {
ReadableStream,
} from 'node:stream/web';
import {
setInterval as every,
} from 'node:timers/promises';
import {
performance,
} from 'node:perf_hooks';
const SECOND = 1000;
const stream = new ReadableStream({
async start(controller) {
for await (const _ of every(SECOND))
controller.enqueue(performance.now());
},
});
for await (const value of stream)
console.log(value);const {
ReadableStream,
} = require('node:stream/web');
const {
setInterval: every,
} = require('node:timers/promises');
const {
performance,
} = require('node:perf_hooks');
const SECOND = 1000;
const stream = new ReadableStream({
async start(controller) {
for await (const _ of every(SECOND))
controller.enqueue(performance.now());
},
});
(async () => {
for await (const value of stream)
console.log(value);
})();
Node.js ストリームとの相互運用性#
Node.jsストリームは、stream.Readable、stream.Writable、stream.Duplexオブジェクトに存在するtoWebおよびfromWebメソッドを介して、webストリームに変換したり、その逆を行ったりすることができます。
詳細については、関連するドキュメントを参照してください
API#
クラス: ReadableStream#
new ReadableStream([underlyingSource [, strategy]])#
underlyingSource<Object>start<Function>ReadableStreamが作成されるとすぐに呼び出されるユーザー定義関数。controller<ReadableStreamDefaultController> | <ReadableByteStreamController>- 戻り値:
undefinedまたはundefinedで解決される promise。
pull<Function>ReadableStreamの内部キューが一杯でないときに繰り返し呼び出されるユーザー定義関数。操作は同期または非同期で行うことができます。非同期の場合、以前に返された promise が解決されるまで、この関数は再度呼び出されません。controller<ReadableStreamDefaultController> | <ReadableByteStreamController>- 戻り値:
undefinedで解決される promise。
cancel<Function>ReadableStreamがキャンセルされたときに呼び出されるユーザー定義関数。reason<any>- 戻り値:
undefinedで解決される promise。
type<string>'bytes'またはundefinedでなければなりません。autoAllocateChunkSize<number>typeが'bytes'に等しい場合にのみ使用されます。ゼロ以外の値に設定すると、ビューバッファがReadableByteStreamController.byobRequestに自動的に割り当てられます。設定されていない場合、デフォルトリーダーReadableStreamDefaultReaderを介してデータを転送するためにストリームの内部キューを使用する必要があります。
strategy<Object>highWaterMark<number> バックプレッシャーが適用される前の最大内部キューサイズ。size<Function> 各データチャンクのサイズを識別するために使用されるユーザー定義関数。
readableStream.locked#
- 型: <boolean> この <ReadableStream> にアクティブなリーダーがある場合に
trueに設定されます。
readableStream.locked プロパティはデフォルトで false であり、ストリームのデータを消費するアクティブなリーダーがある間は true に切り替えられます。
readableStream.getReader([options])#
options<Object>mode<string>'byob'またはundefined
- 戻り値: <ReadableStreamDefaultReader> | <ReadableStreamBYOBReader>
import { ReadableStream } from 'node:stream/web';
const stream = new ReadableStream();
const reader = stream.getReader();
console.log(await reader.read());const { ReadableStream } = require('node:stream/web');
const stream = new ReadableStream();
const reader = stream.getReader();
reader.read().then(console.log);
readableStream.locked を true にします。
readableStream.pipeThrough(transform[, options])#
transform<Object>readable<ReadableStream> このReadableStreamから受け取った、潜在的に変更されたデータをtransform.writableがプッシュするReadableStream。writable<WritableStream> このReadableStreamのデータが書き込まれるWritableStream。
options<Object>preventAbort<boolean>trueの場合、このReadableStreamのエラーはtransform.writableが中断される原因にはなりません。preventCancel<boolean>trueの場合、宛先transform.writableのエラーは、このReadableStreamがキャンセルされる原因にはなりません。preventClose<boolean>trueの場合、このReadableStreamを閉じてもtransform.writableは閉じられません。signal<AbortSignal> <AbortController> を使用してデータ転送をキャンセルできます。
- 戻り値: <ReadableStream>
transform.readableから。
この <ReadableStream> を、transform 引数で提供される <ReadableStream> と <WritableStream> のペアに接続し、この <ReadableStream> からのデータが transform.writable に書き込まれ、場合によっては変換されてから transform.readable にプッシュされるようにします。パイプラインが設定されると、transform.readable が返されます。
パイプ操作がアクティブな間、readableStream.locked を true にします。
import {
ReadableStream,
TransformStream,
} from 'node:stream/web';
const stream = new ReadableStream({
start(controller) {
controller.enqueue('a');
},
});
const transform = new TransformStream({
transform(chunk, controller) {
controller.enqueue(chunk.toUpperCase());
},
});
const transformedStream = stream.pipeThrough(transform);
for await (const chunk of transformedStream)
console.log(chunk);
// Prints: Aconst {
ReadableStream,
TransformStream,
} = require('node:stream/web');
const stream = new ReadableStream({
start(controller) {
controller.enqueue('a');
},
});
const transform = new TransformStream({
transform(chunk, controller) {
controller.enqueue(chunk.toUpperCase());
},
});
const transformedStream = stream.pipeThrough(transform);
(async () => {
for await (const chunk of transformedStream)
console.log(chunk);
// Prints: A
})();
readableStream.pipeTo(destination[, options])#
destination<WritableStream> このReadableStreamのデータが書き込まれる <WritableStream>。options<Object>preventAbort<boolean>trueの場合、このReadableStreamのエラーはdestinationが中断される原因にはなりません。preventCancel<boolean>trueの場合、destinationのエラーはこのReadableStreamがキャンセルされる原因にはなりません。preventClose<boolean>trueの場合、このReadableStreamを閉じてもdestinationは閉じられません。signal<AbortSignal> <AbortController> を使用してデータ転送をキャンセルできます。
- 戻り値:
undefinedで解決される promise
パイプ操作がアクティブな間、readableStream.locked を true にします。
readableStream.tee()#
- 戻り値: <ReadableStream[]>
この ReadableStream のデータが転送される、新しい <ReadableStream> インスタンスのペアを返します。各インスタンスは同じデータを受け取ります。
readableStream.locked を true にします。
readableStream.values([options])#
options<Object>preventCancel<boolean>trueの場合、非同期イテレータが突然終了したときに <ReadableStream> が閉じられるのを防ぎます。デフォルト:false。
この ReadableStream のデータを消費するために使用できる非同期イテレータを作成して返します。
非同期イテレータがアクティブな間、readableStream.locked を true にします。
import { Buffer } from 'node:buffer';
const stream = new ReadableStream(getSomeSource());
for await (const chunk of stream.values({ preventCancel: true }))
console.log(Buffer.from(chunk).toString());
非同期イテレーション#
<ReadableStream> オブジェクトは、for await 構文を使用して非同期イテレータプロトコルをサポートします。
import { Buffer } from 'node:buffer';
const stream = new ReadableStream(getSomeSource());
for await (const chunk of stream)
console.log(Buffer.from(chunk).toString());
非同期イテレータは、終了するまで <ReadableStream> を消費します。
デフォルトでは、非同期イテレータが早期に終了した場合 (break、return、または throw のいずれかによる)、<ReadableStream> は閉じられます。<ReadableStream> が自動的に閉じられるのを防ぐには、readableStream.values() メソッドを使用して非同期イテレータを取得し、preventCancel オプションを true に設定します。
<ReadableStream> はロックされていてはなりません (つまり、既存のアクティブなリーダーがあってはなりません)。非同期イテレーション中、<ReadableStream> はロックされます。
postMessage() を使った転送#
<ReadableStream> インスタンスは <MessagePort> を使用して転送できます。
const stream = new ReadableStream(getReadableSourceSomehow());
const { port1, port2 } = new MessageChannel();
port1.onmessage = ({ data }) => {
data.getReader().read().then((chunk) => {
console.log(chunk);
});
};
port2.postMessage(stream, [stream]);
ReadableStream.from(iterable)#
iterable<Iterable>Symbol.asyncIteratorまたはSymbol.iteratorイテラブルプロトコルを実装したオブジェクト。
イテラブルから新しい <ReadableStream> を作成するユーティリティメソッドです。
import { ReadableStream } from 'node:stream/web';
async function* asyncIterableGenerator() {
yield 'a';
yield 'b';
yield 'c';
}
const stream = ReadableStream.from(asyncIterableGenerator());
for await (const chunk of stream)
console.log(chunk); // Prints: 'a', 'b', 'c'const { ReadableStream } = require('node:stream/web');
async function* asyncIterableGenerator() {
yield 'a';
yield 'b';
yield 'c';
}
(async () => {
const stream = ReadableStream.from(asyncIterableGenerator());
for await (const chunk of stream)
console.log(chunk); // Prints: 'a', 'b', 'c'
})();
結果の <ReadableStream> を <WritableStream> にパイプするには、<Iterable> は <Buffer>, <TypedArray>, または <DataView> オブジェクトのシーケンスを生成 (yield) する必要があります。
import { ReadableStream } from 'node:stream/web';
import { Buffer } from 'node:buffer';
async function* asyncIterableGenerator() {
yield Buffer.from('a');
yield Buffer.from('b');
yield Buffer.from('c');
}
const stream = ReadableStream.from(asyncIterableGenerator());
await stream.pipeTo(createWritableStreamSomehow());const { ReadableStream } = require('node:stream/web');
const { Buffer } = require('node:buffer');
async function* asyncIterableGenerator() {
yield Buffer.from('a');
yield Buffer.from('b');
yield Buffer.from('c');
}
const stream = ReadableStream.from(asyncIterableGenerator());
(async () => {
await stream.pipeTo(createWritableStreamSomehow());
})();
クラス: ReadableStreamDefaultReader#
デフォルトでは、引数なしで readableStream.getReader() を呼び出すと、ReadableStreamDefaultReader のインスタンスが返されます。デフォルトリーダーは、ストリームを通過するデータのチャンクを不透明な値として扱います。これにより、<ReadableStream> は一般的にあらゆる JavaScript 値で動作できます。
new ReadableStreamDefaultReader(stream)#
stream<ReadableStream>
指定された <ReadableStream> にロックされた新しい <ReadableStreamDefaultReader> を作成します。
readableStreamDefaultReader.cancel([reason])#
reason<any>- 戻り値:
undefinedで解決される promise。
<ReadableStream> をキャンセルし、基になるストリームがキャンセルされたときに解決される promise を返します。
readableStreamDefaultReader.closed#
- 型: <Promise> 関連付けられた <ReadableStream> が閉じられたときに
undefinedで解決されます。ストリームがエラーになった場合、またはストリームが閉じる前にリーダーのロックが解放された場合は拒否されます。
readableStreamDefaultReader.read()#
基になる <ReadableStream> から次のデータチャンクを要求し、データが利用可能になるとそのデータで解決される promise を返します。
readableStreamDefaultReader.releaseLock()#
このリーダーの基になる <ReadableStream> に対するロックを解放します。
クラス: ReadableStreamBYOBReader#
ReadableStreamBYOBReader は、バイト指向の <ReadableStream> (ReadableStream が作成されたときに underlyingSource.type が 'bytes' に設定されているもの) の代替コンシューマーです。
BYOB は「bring your own buffer」(独自のバッファを持ち込む) の略です。これは、余分なコピーを避けてバイト指向のデータをより効率的に読み取ることを可能にするパターンです。
import {
open,
} from 'node:fs/promises';
import {
ReadableStream,
} from 'node:stream/web';
import { Buffer } from 'node:buffer';
class Source {
type = 'bytes';
autoAllocateChunkSize = 1024;
async start(controller) {
this.file = await open(new URL(import.meta.url));
this.controller = controller;
}
async pull(controller) {
const view = controller.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();
}
controller.byobRequest.respond(bytesRead);
}
}
const stream = new ReadableStream(new Source());
async function read(stream) {
const reader = stream.getReader({ mode: 'byob' });
const chunks = [];
let result;
do {
result = await reader.read(Buffer.alloc(100));
if (result.value !== undefined)
chunks.push(Buffer.from(result.value));
} while (!result.done);
return Buffer.concat(chunks);
}
const data = await read(stream);
console.log(Buffer.from(data).toString());
new ReadableStreamBYOBReader(stream)#
stream<ReadableStream>
指定された <ReadableStream> にロックされた新しい ReadableStreamBYOBReader を作成します。
readableStreamBYOBReader.cancel([reason])#
reason<any>- 戻り値:
undefinedで解決される promise。
<ReadableStream> をキャンセルし、基になるストリームがキャンセルされたときに解決される promise を返します。
readableStreamBYOBReader.closed#
- 型: <Promise> 関連付けられた <ReadableStream> が閉じられたときに
undefinedで解決されます。ストリームがエラーになった場合、またはストリームが閉じる前にリーダーのロックが解放された場合は拒否されます。
readableStreamBYOBReader.read(view[, options])#
view<Buffer> | <TypedArray> | <DataView>options<Object>min<number> 設定されている場合、返される promise はmin個の要素が利用可能になった時点で解決されます。設定されていない場合、promise は少なくとも1つの要素が利用可能になった時点で解決されます。
- 戻り値: オブジェクトで解決される promise
value<TypedArray> | <DataView>done<boolean>
基になる <ReadableStream> から次のデータチャンクを要求し、データが利用可能になるとそのデータで解決される promise を返します。
プールされた <Buffer> オブジェクトインスタンスをこのメソッドに渡さないでください。プールされた Buffer オブジェクトは Buffer.allocUnsafe() または Buffer.from() を使用して作成されるか、さまざまな node:fs モジュールのコールバックによって返されることがよくあります。これらのタイプの Buffer は、すべてのプールされた Buffer インスタンスからのすべてのデータを含む共有の基になる <ArrayBuffer> オブジェクトを使用します。Buffer, <TypedArray>, または <DataView> が readableStreamBYOBReader.read() に渡されると、ビューの基になる ArrayBuffer は デタッチ され、その ArrayBuffer 上に存在する可能性のあるすべての既存のビューが無効になります。これはアプリケーションに壊滅的な結果をもたらす可能性があります。
readableStreamBYOBReader.releaseLock()#
このリーダーの基になる <ReadableStream> に対するロックを解放します。
クラス: ReadableStreamDefaultController#
すべての <ReadableStream> には、ストリームのキューの内部状態と管理を担当するコントローラーがあります。ReadableStreamDefaultController は、バイト指向でない ReadableStream のデフォルトのコントローラー実装です。
readableStreamDefaultController.close()#
このコントローラーが関連付けられている <ReadableStream> を閉じます。
readableStreamDefaultController.desiredSize#
- 型: <number>
<ReadableStream> のキューを埋めるために残っているデータの量を返します。
readableStreamDefaultController.enqueue([chunk])#
chunk<any>
<ReadableStream> のキューに新しいデータチャンクを追加します。
readableStreamDefaultController.error([error])#
error<any>
<ReadableStream> がエラーになり閉じる原因となるエラーを通知します。
クラス: ReadableByteStreamController#
すべての <ReadableStream> には、ストリームのキューの内部状態と管理を担当するコントローラーがあります。ReadableByteStreamController は、バイト指向の ReadableStream 用です。
readableByteStreamController.byobRequest#
readableByteStreamController.close()#
このコントローラーが関連付けられている <ReadableStream> を閉じます。
readableByteStreamController.enqueue(chunk)#
chunk<Buffer> | <TypedArray> | <DataView>
<ReadableStream> のキューに新しいデータチャンクを追加します。
クラス: ReadableStreamBYOBRequest#
バイト指向ストリームで ReadableByteStreamController を使用し、ReadableStreamBYOBReader を使用する場合、readableByteStreamController.byobRequest プロパティは、現在の読み取り要求を表す ReadableStreamBYOBRequest インスタンスへのアクセスを提供します。このオブジェクトは、読み取り要求のために提供された ArrayBuffer/TypedArray へのアクセスを得るために使用され、データが提供されたことを通知するためのメソッドを提供します。
readableStreamBYOBRequest.respond(bytesWritten)#
bytesWritten<number>
readableStreamBYOBRequest.view に bytesWritten バイト数が書き込まれたことを通知します。
readableStreamBYOBRequest.respondWithNewView(view)#
view<Buffer> | <TypedArray> | <DataView>
新しい Buffer、TypedArray、または DataView に書き込まれたバイトで要求が満たされたことを通知します。
readableStreamBYOBRequest.view#
- 型: <Buffer> | <TypedArray> | <DataView>
クラス: WritableStream#
WritableStream は、ストリームデータが送信される宛先です。
import {
WritableStream,
} from 'node:stream/web';
const stream = new WritableStream({
write(chunk) {
console.log(chunk);
},
});
await stream.getWriter().write('Hello World');
new WritableStream([underlyingSink[, strategy]])#
underlyingSink<Object>start<Function>WritableStreamが作成されるとすぐに呼び出されるユーザー定義関数。controller<WritableStreamDefaultController>- 戻り値:
undefinedまたはundefinedで解決される promise。
write<Function> データチャンクがWritableStreamに書き込まれたときに呼び出されるユーザー定義関数。chunk<any>controller<WritableStreamDefaultController>- 戻り値:
undefinedで解決される promise。
close<Function>WritableStreamが閉じられたときに呼び出されるユーザー定義関数。- 戻り値:
undefinedで解決される promise。
- 戻り値:
abort<Function>WritableStreamを突然閉じるために呼び出されるユーザー定義関数。reason<any>- 戻り値:
undefinedで解決される promise。
type<any>typeオプションは将来の使用のために予約されており、必ず undefined でなければなりません。
strategy<Object>highWaterMark<number> バックプレッシャーが適用される前の最大内部キューサイズ。size<Function> 各データチャンクのサイズを識別するために使用されるユーザー定義関数。
writableStream.abort([reason])#
reason<any>- 戻り値:
undefinedで解決される promise。
WritableStream を突然終了します。キューに入れられたすべての書き込みはキャンセルされ、関連する promise は拒否されます。
writableStream.getWriter()#
WritableStream にデータを書き込むために使用できる新しいライターインスタンスを作成して返します。
writableStream.locked#
- 型: <boolean>
writableStream.locked プロパティはデフォルトで false であり、この WritableStream にアクティブなライターがアタッチされている間は true に切り替えられます。
postMessage() を使った転送#
<WritableStream> インスタンスは <MessagePort> を使用して転送できます。
const stream = new WritableStream(getWritableSinkSomehow());
const { port1, port2 } = new MessageChannel();
port1.onmessage = ({ data }) => {
data.getWriter().write('hello');
};
port2.postMessage(stream, [stream]);
クラス: WritableStreamDefaultWriter#
new WritableStreamDefaultWriter(stream)#
stream<WritableStream>
指定された WritableStream にロックされた新しい WritableStreamDefaultWriter を作成します。
writableStreamDefaultWriter.abort([reason])#
reason<any>- 戻り値:
undefinedで解決される promise。
WritableStream を突然終了します。キューに入れられたすべての書き込みはキャンセルされ、関連する promise は拒否されます。
writableStreamDefaultWriter.close()#
- 戻り値:
undefinedで解決される promise。
追加の書き込みが予期されない場合に WritableStream を閉じます。
writableStreamDefaultWriter.closed#
- 型: <Promise> 関連付けられた <WritableStream> が閉じられたときに
undefinedで解決されます。ストリームがエラーになった場合、またはストリームが閉じる前にライターのロックが解放された場合は拒否されます。
writableStreamDefaultWriter.releaseLock()#
このライターの基になる <ReadableStream> に対するロックを解放します。
writableStreamDefaultWriter.write([chunk])#
chunk<any>- 戻り値:
undefinedで解決される promise。
<WritableStream> のキューに新しいデータチャンクを追加します。
クラス: WritableStreamDefaultController#
WritableStreamDefaultController は <WritableStream> の内部状態を管理します。
writableStreamDefaultController.error([error])#
error<any>
WritableStream データの処理中にエラーが発生したことを通知するためにユーザーコードによって呼び出されます。呼び出されると、<WritableStream> は中断され、現在保留中の書き込みはキャンセルされます。
writableStreamDefaultController.signal#
- 型: <AbortSignal> <WritableStream> が中断されたときに、保留中の書き込みまたはクローズ操作をキャンセルするために使用できる
AbortSignal。
クラス: TransformStream#
TransformStream は、<ReadableStream> と <WritableStream> から構成され、WritableStream に書き込まれたデータが受信され、潜在的に変換された後、ReadableStream のキューにプッシュされるように接続されています。
import {
TransformStream,
} from 'node:stream/web';
const transform = new TransformStream({
transform(chunk, controller) {
controller.enqueue(chunk.toUpperCase());
},
});
await Promise.all([
transform.writable.getWriter().write('A'),
transform.readable.getReader().read(),
]);
new TransformStream([transformer[, writableStrategy[, readableStrategy]]])#
transformer<Object>start<Function>TransformStreamが作成されるとすぐに呼び出されるユーザー定義関数。controller<TransformStreamDefaultController>- 戻り値:
undefinedまたはundefinedで解決される promise
transform<Function>transformStream.writableに書き込まれたデータチャンクを受け取り、潜在的に変更してから、transformStream.readableに転送するユーザー定義関数。chunk<any>controller<TransformStreamDefaultController>- 戻り値:
undefinedで解決される promise。
flush<Function>TransformStreamの書き込み可能な側が閉じられる直前に呼び出され、変換プロセスの終了を通知するユーザー定義関数。controller<TransformStreamDefaultController>- 戻り値:
undefinedで解決される promise。
readableType<any>readableTypeオプションは将来の使用のために予約されており、必ずundefinedでなければなりません。writableType<any>writableTypeオプションは将来の使用のために予約されており、必ずundefinedでなければなりません。
writableStrategy<Object>highWaterMark<number> バックプレッシャーが適用される前の最大内部キューサイズ。size<Function> 各データチャンクのサイズを識別するために使用されるユーザー定義関数。
readableStrategy<Object>highWaterMark<number> バックプレッシャーが適用される前の最大内部キューサイズ。size<Function> 各データチャンクのサイズを識別するために使用されるユーザー定義関数。
transformStream.readable#
transformStream.writable#
postMessage() を使った転送#
<TransformStream> インスタンスは <MessagePort> を使用して転送できます。
const stream = new TransformStream();
const { port1, port2 } = new MessageChannel();
port1.onmessage = ({ data }) => {
const { writable, readable } = data;
// ...
};
port2.postMessage(stream, [stream]);
クラス: TransformStreamDefaultController#
TransformStreamDefaultController は TransformStream の内部状態を管理します。
transformStreamDefaultController.error([reason])#
reason<any>
変換データの処理中にエラーが発生したことを読み取り可能な側と書き込み可能な側の両方に通知し、両方の側が突然閉じられる原因となります。
transformStreamDefaultController.terminate()#
トランスポートの読み取り可能な側を閉じ、書き込み可能な側がエラーで突然閉じられる原因となります。
クラス: ByteLengthQueuingStrategy#
byteLengthQueuingStrategy.size#
- 型: <Function>
クラス: CountQueuingStrategy#
countQueuingStrategy.size#
- 型: <Function>
クラス: TextEncoderStream#
new TextEncoderStream()#
新しい TextEncoderStream インスタンスを作成します。
textEncoderStream.readable#
textEncoderStream.writable#
クラス: TextDecoderStream#
new TextDecoderStream([encoding[, options]])#
新しい TextDecoderStream インスタンスを作成します。
textDecoderStream.readable#
textDecoderStream.writable#
クラス: CompressionStream#
new CompressionStream(format)#
format<string>'deflate','deflate-raw','gzip', または'brotli'のいずれか。
compressionStream.readable#
compressionStream.writable#
クラス: DecompressionStream#
new DecompressionStream(format)#
format<string>'deflate','deflate-raw','gzip', または'brotli'のいずれか。
decompressionStream.readable#
decompressionStream.writable#
ユーティリティコンシューマー#
ユーティリティコンシューマー関数は、ストリームを消費するための一般的なオプションを提供します。
これらは次を使用してアクセスされます
import {
arrayBuffer,
blob,
buffer,
json,
text,
} from 'node:stream/consumers';const {
arrayBuffer,
blob,
buffer,
json,
text,
} = require('node:stream/consumers');
streamConsumers.arrayBuffer(stream)#
stream<ReadableStream> | <stream.Readable> | <AsyncIterator>- 戻り値: <Promise> ストリームの全内容を含む
ArrayBufferで解決されます。
import { arrayBuffer } from 'node:stream/consumers';
import { Readable } from 'node:stream';
import { TextEncoder } from 'node:util';
const encoder = new TextEncoder();
const dataArray = encoder.encode('hello world from consumers!');
const readable = Readable.from(dataArray);
const data = await arrayBuffer(readable);
console.log(`from readable: ${data.byteLength}`);
// Prints: from readable: 76const { arrayBuffer } = require('node:stream/consumers');
const { Readable } = require('node:stream');
const { TextEncoder } = require('node:util');
const encoder = new TextEncoder();
const dataArray = encoder.encode('hello world from consumers!');
const readable = Readable.from(dataArray);
arrayBuffer(readable).then((data) => {
console.log(`from readable: ${data.byteLength}`);
// Prints: from readable: 76
});
streamConsumers.blob(stream)#
stream<ReadableStream> | <stream.Readable> | <AsyncIterator>- 戻り値: <Promise> ストリームの全内容を含む <Blob> で解決されます。
import { blob } from 'node:stream/consumers';
const dataBlob = new Blob(['hello world from consumers!']);
const readable = dataBlob.stream();
const data = await blob(readable);
console.log(`from readable: ${data.size}`);
// Prints: from readable: 27const { blob } = require('node:stream/consumers');
const dataBlob = new Blob(['hello world from consumers!']);
const readable = dataBlob.stream();
blob(readable).then((data) => {
console.log(`from readable: ${data.size}`);
// Prints: from readable: 27
});
streamConsumers.buffer(stream)#
stream<ReadableStream> | <stream.Readable> | <AsyncIterator>- 戻り値: <Promise> ストリームの全内容を含む <Buffer> で解決されます。
import { buffer } from 'node:stream/consumers';
import { Readable } from 'node:stream';
import { Buffer } from 'node:buffer';
const dataBuffer = Buffer.from('hello world from consumers!');
const readable = Readable.from(dataBuffer);
const data = await buffer(readable);
console.log(`from readable: ${data.length}`);
// Prints: from readable: 27const { buffer } = require('node:stream/consumers');
const { Readable } = require('node:stream');
const { Buffer } = require('node:buffer');
const dataBuffer = Buffer.from('hello world from consumers!');
const readable = Readable.from(dataBuffer);
buffer(readable).then((data) => {
console.log(`from readable: ${data.length}`);
// Prints: from readable: 27
});
streamConsumers.json(stream)#
stream<ReadableStream> | <stream.Readable> | <AsyncIterator>- 戻り値: <Promise> UTF-8エンコードされた文字列として解析され、その後
JSON.parse()に渡されたストリームの内容で解決されます。
import { json } from 'node:stream/consumers';
import { Readable } from 'node:stream';
const items = Array.from(
{
length: 100,
},
() => ({
message: 'hello world from consumers!',
}),
);
const readable = Readable.from(JSON.stringify(items));
const data = await json(readable);
console.log(`from readable: ${data.length}`);
// Prints: from readable: 100const { json } = require('node:stream/consumers');
const { Readable } = require('node:stream');
const items = Array.from(
{
length: 100,
},
() => ({
message: 'hello world from consumers!',
}),
);
const readable = Readable.from(JSON.stringify(items));
json(readable).then((data) => {
console.log(`from readable: ${data.length}`);
// Prints: from readable: 100
});
streamConsumers.text(stream)#
stream<ReadableStream> | <stream.Readable> | <AsyncIterator>- 戻り値: <Promise> UTF-8エンコードされた文字列として解析されたストリームの内容で解決されます。
import { text } from 'node:stream/consumers';
import { Readable } from 'node:stream';
const readable = Readable.from('Hello world from consumers!');
const data = await text(readable);
console.log(`from readable: ${data.length}`);
// Prints: from readable: 27const { text } = require('node:stream/consumers');
const { Readable } = require('node:stream');
const readable = Readable.from('Hello world from consumers!');
text(readable).then((data) => {
console.log(`from readable: ${data.length}`);
// Prints: from readable: 27
});