@@ -37,6 +37,56 @@ using v8::Value;
3737
3838namespace {
3939
40+ // TODO(@flakey5, @jasnell): Update the JavaScript side of blob...
41+ //
42+ // Within the JavaScript Blob object, the arrayBuffer() method will change significantly.
43+ // the pattern will be something like:
44+ //
45+ // const { createDeferredPromise } = require('internal/util');
46+ // const { concat, ...} = internalBinding('blob');
47+ //
48+ // function arrayBuffer() {
49+ // const { promise, resolve } = createDeferredPromise();
50+ // const reader = this.#buffer.getReader();
51+ // const buffers = [];
52+ // const readNext = () => {
53+ // const result = reader.pull((status, buffer) => {
54+ // if (status == -1) {
55+ // // EOS, concat and resolve.
56+ // // buffer should be undefined here.
57+ // resolve(concat(buffers));
58+ // return;
59+ // }
60+ // buffers.push(buffer);
61+ // readNext();
62+ // });
63+ // };
64+ // readNext(); // Starts the read loop
65+ // return promise;
66+ // }
67+ //
68+ // For the stream() method, the pattern will be something like:
69+ //
70+ // function stream() {
71+ // const reader = this.#buffer.getReader();
72+ // return new ReadableStream({
73+ // #reader = reader;
74+ // pull(c) {
75+ // const { promise, resolve } = createDeferredPromise();
76+ // reader.pull((status, buffer) => {
77+ // if (status === -1) { // EOS
78+ // c.close();
79+ // resolve();
80+ // return;
81+ // }
82+ // c.enqueue(new Uint8Array(buffer));
83+ // resolve();
84+ // });
85+ // return promise;
86+ // }
87+ // });
88+ // }
89+
4090// Concatenate multiple ArrayBufferView/ArrayBuffers into a single ArrayBuffer.
4191// This method treats all ArrayBufferView types the same.
4292void Concat (const FunctionCallbackInfo<Value>& args) {
0 commit comments