1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-21 15:04:11 -05:00

feat(ext/web): add Blob.prototype.bytes() (#24148)

This commit is contained in:
Kenta Moriuchi 2024-07-02 23:04:08 +09:00 committed by GitHub
parent 8db420d552
commit f78a60e882
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 26 additions and 17 deletions

View file

@ -3121,6 +3121,8 @@ interface Blob {
readonly type: string; readonly type: string;
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/arrayBuffer) */ /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/arrayBuffer) */
arrayBuffer(): Promise<ArrayBuffer>; arrayBuffer(): Promise<ArrayBuffer>;
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/bytes) */
bytes(): Promise<Uint8Array>;
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/slice) */ /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/slice) */
slice(start?: number, end?: number, contentType?: string): Blob; slice(start?: number, end?: number, contentType?: string): Blob;
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/stream) */ /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/stream) */

View file

@ -1007,6 +1007,8 @@ interface Blob {
readonly type: string; readonly type: string;
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/arrayBuffer) */ /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/arrayBuffer) */
arrayBuffer(): Promise<ArrayBuffer>; arrayBuffer(): Promise<ArrayBuffer>;
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/bytes) */
bytes(): Promise<Uint8Array>;
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/slice) */ /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/slice) */
slice(start?: number, end?: number, contentType?: string): Blob; slice(start?: number, end?: number, contentType?: string): Blob;
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/stream) */ /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/stream) */

View file

@ -387,14 +387,9 @@ class Blob {
} }
/** /**
* @returns {Promise<string>} * @param {number} size
* @returns {Promise<Uint8Array>}
*/ */
async text() {
webidl.assertBranded(this, BlobPrototype);
const buffer = await this.#u8Array(this.size);
return core.decode(buffer);
}
async #u8Array(size) { async #u8Array(size) {
const bytes = new Uint8Array(size); const bytes = new Uint8Array(size);
const partIterator = toIterator(this[_parts]); const partIterator = toIterator(this[_parts]);
@ -413,6 +408,15 @@ class Blob {
return bytes; return bytes;
} }
/**
* @returns {Promise<string>}
*/
async text() {
webidl.assertBranded(this, BlobPrototype);
const buffer = await this.#u8Array(this.size);
return core.decode(buffer);
}
/** /**
* @returns {Promise<ArrayBuffer>} * @returns {Promise<ArrayBuffer>}
*/ */
@ -422,6 +426,14 @@ class Blob {
return TypedArrayPrototypeGetBuffer(buf); return TypedArrayPrototypeGetBuffer(buf);
} }
/**
* @returns {Promise<Uint8Array>}
*/
async bytes() {
webidl.assertBranded(this, BlobPrototype);
return await this.#u8Array(this.size);
}
[SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) {
return inspect( return inspect(
createFilteredInspectProxy({ createFilteredInspectProxy({

View file

@ -533,6 +533,7 @@ declare interface Blob {
readonly size: number; readonly size: number;
readonly type: string; readonly type: string;
arrayBuffer(): Promise<ArrayBuffer>; arrayBuffer(): Promise<ArrayBuffer>;
bytes(): Promise<Uint8Array>;
slice(start?: number, end?: number, contentType?: string): Blob; slice(start?: number, end?: number, contentType?: string): Blob;
stream(): ReadableStream<Uint8Array>; stream(): ReadableStream<Uint8Array>;
text(): Promise<string>; text(): Promise<string>;

View file

@ -10109,8 +10109,8 @@
"Blob-text.any.worker.html": true, "Blob-text.any.worker.html": true,
"Blob-in-worker.worker.html": true, "Blob-in-worker.worker.html": true,
"Blob-constructor-dom.window.html": false, "Blob-constructor-dom.window.html": false,
"Blob-bytes.any.html": false, "Blob-bytes.any.html": true,
"Blob-bytes.any.worker.html": false, "Blob-bytes.any.worker.html": true,
"Blob-constructor-endings.html": false "Blob-constructor-endings.html": false
}, },
"file": { "file": {
@ -10183,9 +10183,6 @@
"filereader_result.any.worker.html": true "filereader_result.any.worker.html": true
}, },
"idlharness.any.html": [ "idlharness.any.html": [
"Blob interface: operation bytes()",
"Blob interface: new Blob([\"TEST\"]) must inherit property \"bytes()\" with the proper type",
"Blob interface: new File([\"myFileBits\"], \"myFileName\") must inherit property \"bytes()\" with the proper type",
"FileList interface: existence and properties of interface object", "FileList interface: existence and properties of interface object",
"FileList interface object length", "FileList interface object length",
"FileList interface object name", "FileList interface object name",
@ -10196,9 +10193,6 @@
"FileList interface: attribute length" "FileList interface: attribute length"
], ],
"idlharness.any.worker.html": [ "idlharness.any.worker.html": [
"Blob interface: operation bytes()",
"Blob interface: new Blob([\"TEST\"]) must inherit property \"bytes()\" with the proper type",
"Blob interface: new File([\"myFileBits\"], \"myFileName\") must inherit property \"bytes()\" with the proper type",
"FileList interface: existence and properties of interface object", "FileList interface: existence and properties of interface object",
"FileList interface object length", "FileList interface object length",
"FileList interface object name", "FileList interface object name",
@ -10220,7 +10214,6 @@
], ],
"FileReaderSync.worker.html": false, "FileReaderSync.worker.html": false,
"idlharness.worker.html": [ "idlharness.worker.html": [
"Blob interface: operation bytes()",
"FileList interface: existence and properties of interface object", "FileList interface: existence and properties of interface object",
"FileList interface object length", "FileList interface object length",
"FileList interface object name", "FileList interface object name",
@ -10265,7 +10258,6 @@
"Service worker test setup" "Service worker test setup"
], ],
"idlharness.html": [ "idlharness.html": [
"Blob interface: operation bytes()",
"FileList interface: existence and properties of interface object", "FileList interface: existence and properties of interface object",
"FileList interface object length", "FileList interface object length",
"FileList interface object name", "FileList interface object name",