Skip to content

About

modernization of the original generic-filehandle, no Buffer polyfill needed

Resources

Contributing

Stars

0 stars

Watchers

12 watching

Forks

Repository files navigation

generic-filehandle2

NPM version Build Status

Provides a uniform interface for accessing binary data from local files, remote HTTP resources, and Blob data in the browser.

Usage

import { LocalFile, RemoteFile, BlobFile } from 'generic-filehandle2'

const local = new LocalFile('/some/file/path/file.txt')
const remote = new RemoteFile('http://somesite.com/file.txt')
const blobfile = new BlobFile(new Blob([some_data], { type: 'text/plain' }))

const buf1 = await remote.read(/* length */ 10, /* position */ 10) // range request
const buf2 = await remote.readFile()

If you are reading a remote file through an indexed parser, put @gmod/range-cache-filehandle underneath it. Its RemoteFileWithRangeCache is a drop-in replacement for RemoteFile that caches byte ranges in chunks, so that a query's many small reads turn into a few requests.

API

Every filehandle has the same four methods:

await file.read(length, position, opts) // the bytes at a byte offset
await file.readFile(opts) // the whole file, as bytes or as a string
await file.stat() // the file size, as { size }
await file.close() // close the file descriptor, if one is open

docs/api.md covers their options, shared behavior, and how to extend RemoteFile.

LocalFile's constructor also takes cacheFd and fdIdleTimeoutMs, which control its file descriptor; see docs/local-files.md.

Docs

See also

The original generic-filehandle library: https://github.com/GMOD/generic-filehandle

Publishing

Trusted publishing via GitHub Actions.

pnpm version patch  # or minor/major

About

modernization of the original generic-filehandle, no Buffer polyfill needed

Resources

Contributing

Stars

0 stars

Watchers

12 watching

Forks

Releases

Packages

Used by

Contributors

Languages