Skip to content

Commit bd7fc78

Browse files
committed
blobToBuffer -> readAsBuffer
1 parent 8b9bf93 commit bd7fc78

File tree

7 files changed

+26
-19
lines changed

7 files changed

+26
-19
lines changed

eslint.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export default antfu({
1717
},
1818
{
1919
name: ['*', 'bytes'],
20-
message: 'Blob.bytes is not widely supported, use blobToBuffer instead',
20+
message: 'Request/Blob/Response/... .bytes is not widely supported, use readAsBuffer instead',
2121
},
2222
],
2323
'no-restricted-imports': ['error', {

packages/client/src/adapters/websocket/link-client.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import type { StandardLazyResponse, StandardRequest } from '@orpc/standard-server'
22
import type { ClientContext, ClientOptions } from '../../types'
33
import type { StandardLinkClient } from '../standard'
4-
import { blobToBuffer } from '@orpc/shared'
4+
import { readAsBuffer } from '@orpc/shared'
55
import { ClientPeer } from '@orpc/standard-server-peer'
66

77
export interface experimental_LinkWebsocketClientOptions {
@@ -30,7 +30,7 @@ export class experimental_LinkWebsocketClient<T extends ClientContext> implement
3030

3131
options.websocket.addEventListener('message', async (event) => {
3232
const message = event.data instanceof Blob
33-
? await blobToBuffer(event.data)
33+
? await readAsBuffer(event.data)
3434
: event.data
3535

3636
this.peer.message(message)

packages/server/src/adapters/websocket/handler.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import type { StandardHandler } from '../standard'
44
import type {
55
experimental_HandleStandardServerPeerMessageOptions as HandleStandardServerPeerMessageOptions,
66
} from '../standard-peer'
7-
import { blobToBuffer, resolveMaybeOptionalOptions } from '@orpc/shared'
7+
import { readAsBuffer, resolveMaybeOptionalOptions } from '@orpc/shared'
88
import { ServerPeer } from '@orpc/standard-server-peer'
99
import {
1010
experimental_handleStandardServerPeerMessage as handleStandardServerPeerMessage,
@@ -57,7 +57,7 @@ export class experimental_WebsocketHandler<T extends Context> {
5757
}
5858

5959
const message = data instanceof Blob
60-
? await blobToBuffer(data)
60+
? await readAsBuffer(data)
6161
: data
6262

6363
await handleStandardServerPeerMessage(

packages/server/src/adapters/ws/handler.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import type { StandardHandler } from '../standard'
55
import type {
66
experimental_HandleStandardServerPeerMessageOptions as HandleStandardServerPeerMessageOptions,
77
} from '../standard-peer'
8-
import { blobToBuffer, resolveMaybeOptionalOptions } from '@orpc/shared'
8+
import { readAsBuffer, resolveMaybeOptionalOptions } from '@orpc/shared'
99
import { ServerPeer } from '@orpc/standard-server-peer'
1010
import {
1111
experimental_handleStandardServerPeerMessage as handleStandardServerPeerMessage,
@@ -25,7 +25,7 @@ export class experimental_WsHandler<T extends Context> {
2525

2626
ws.addEventListener('message', async (event) => {
2727
const message = Array.isArray(event.data)
28-
? await blobToBuffer(new Blob(event.data))
28+
? await readAsBuffer(new Blob(event.data))
2929
: event.data
3030

3131
await handleStandardServerPeerMessage(

packages/shared/src/blob.test.ts

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
1-
import { blobToBuffer } from './blob'
1+
import { readAsBuffer } from './blob'
22

3-
it('blobToBuffer', async () => {
3+
it('readAsBuffer', async () => {
44
const blob = new Blob(['test'], { type: 'text/plain' })
55

6-
expect(new TextDecoder().decode(await blobToBuffer(blob))).toBe('test')
7-
expect(new TextDecoder().decode(await blobToBuffer(new Proxy(blob, {
8-
has: (target, prop) => Reflect.has(target, prop) && prop !== 'bytes',
6+
expect(new TextDecoder().decode(await readAsBuffer(blob))).toBe('test')
7+
expect(new TextDecoder().decode(await readAsBuffer(new Proxy(blob, {
8+
get: (target, prop) => {
9+
if (prop === 'bytes') {
10+
return undefined
11+
}
12+
return Reflect.get(target, prop)
13+
},
914
})))).toBe('test')
15+
16+
expect(new TextDecoder().decode(await readAsBuffer(new Response(blob)))).toBe('test')
1017
})

packages/shared/src/blob.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
/**
2-
* Converts a Blob to a buffer (ArrayBuffer or Uint8Array).
2+
* Converts Request/Response/Blob/File/.. to a buffer (ArrayBuffer or Uint8Array).
33
*
44
* Prefers the newer `.bytes` method when available as it more efficient but not widely supported yet.
55
*/
6-
export function blobToBuffer(blob: Blob): Promise<ArrayBuffer | Uint8Array> {
7-
if ('bytes' in blob) {
6+
export function readAsBuffer(source: Pick<Blob, 'arrayBuffer' | 'bytes'>): Promise<ArrayBuffer | Uint8Array> {
7+
if (typeof source.bytes === 'function') {
88
// eslint-disable-next-line ban/ban
9-
return blob.bytes()
9+
return source.bytes()
1010
}
1111

12-
return (blob as Blob).arrayBuffer()
12+
return (source as Pick<Blob, 'arrayBuffer'>).arrayBuffer()
1313
}

packages/standard-server-peer/src/codec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type { EventMeta, StandardBody, StandardHeaders, StandardRequest, StandardResponse } from '@orpc/standard-server'
22
import type { EncodedMessage } from './types'
3-
import { blobToBuffer, isAsyncIteratorObject, stringifyJSON } from '@orpc/shared'
3+
import { isAsyncIteratorObject, readAsBuffer, stringifyJSON } from '@orpc/shared'
44
import { flattenHeader, generateContentDisposition, getFilenameFromContentDisposition } from '@orpc/standard-server'
55

66
export enum MessageType {
@@ -307,7 +307,7 @@ async function encodeRawMessage(data: object, blob?: Blob): Promise<EncodedMessa
307307
return json
308308
}
309309

310-
return blobToBuffer(new Blob([
310+
return readAsBuffer(new Blob([
311311
new TextEncoder().encode(json),
312312
new Uint8Array([JSON_AND_BINARY_DELIMITER]),
313313
blob,

0 commit comments

Comments
 (0)