fix(bun): correctly handle BunFile
s
This commit is contained in:
parent
44a60360ab
commit
1720433882
4 changed files with 26 additions and 4 deletions
|
@ -9,9 +9,9 @@ import {
|
|||
} from '@mtcute/core/client.js'
|
||||
import { setPlatform } from '@mtcute/core/platform.js'
|
||||
|
||||
import { NodePlatform } from './common-internals-node/platform.js'
|
||||
import { downloadToFile } from './methods/download-file.js'
|
||||
import { downloadAsNodeStream } from './methods/download-node-stream.js'
|
||||
import { BunPlatform } from './platform.js'
|
||||
import { SqliteStorage } from './sqlite/index.js'
|
||||
import { BunCryptoProvider } from './utils/crypto.js'
|
||||
import { TcpTransport } from './utils/tcp.js'
|
||||
|
@ -41,7 +41,7 @@ export interface BaseTelegramClientOptions
|
|||
|
||||
export class BaseTelegramClient extends BaseTelegramClientBase {
|
||||
constructor(opts: BaseTelegramClientOptions) {
|
||||
if (!opts.platformless) setPlatform(new NodePlatform())
|
||||
if (!opts.platformless) setPlatform(new BunPlatform())
|
||||
|
||||
super({
|
||||
crypto: new BunCryptoProvider(),
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
export * from './client.js'
|
||||
export * from './common-internals-node/platform.js'
|
||||
export * from './platform.js'
|
||||
export * from './sqlite/index.js'
|
||||
export * from './utils/crypto.js'
|
||||
export * from './utils/tcp.js'
|
||||
|
|
8
packages/bun/src/platform.ts
Normal file
8
packages/bun/src/platform.ts
Normal file
|
@ -0,0 +1,8 @@
|
|||
import { NodePlatform } from './common-internals-node/platform.js'
|
||||
import { normalizeFile } from './utils/normalize-file.js'
|
||||
|
||||
export class BunPlatform extends NodePlatform {
|
||||
declare normalizeFile: typeof normalizeFile
|
||||
}
|
||||
|
||||
BunPlatform.prototype.normalizeFile = normalizeFile
|
|
@ -1,3 +1,4 @@
|
|||
import { BunFile } from 'bun'
|
||||
import { ReadStream } from 'fs'
|
||||
import { stat } from 'fs/promises'
|
||||
import { basename } from 'path'
|
||||
|
@ -5,11 +6,24 @@ import { Readable as NodeReadable } from 'stream'
|
|||
|
||||
import { UploadFileLike } from '@mtcute/core'
|
||||
|
||||
// https://github.com/oven-sh/bun/issues/10481
|
||||
function isBunFile(file: unknown): file is BunFile {
|
||||
return file instanceof Blob && 'name' in file && file.name.length > 0
|
||||
}
|
||||
|
||||
export async function normalizeFile(file: UploadFileLike) {
|
||||
if (typeof file === 'string') {
|
||||
file = Bun.file(file)
|
||||
}
|
||||
|
||||
if (isBunFile(file)) {
|
||||
return {
|
||||
file: file,
|
||||
fileName: file.name,
|
||||
fileSize: file.size,
|
||||
}
|
||||
}
|
||||
|
||||
// while these are not Bun-specific, they still may happen
|
||||
if (file instanceof ReadStream) {
|
||||
const fileName = basename(file.path.toString())
|
||||
|
@ -28,6 +42,6 @@ export async function normalizeFile(file: UploadFileLike) {
|
|||
}
|
||||
}
|
||||
|
||||
// string -> ReadStream, thus already handled
|
||||
// string -> BunFile, thus already handled
|
||||
return null
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue