indexeddb

IndexedDB read and write streams for the browser.

Install

npm install @datastream/indexeddb

indexedDBConnect

Opens (or creates) an IndexedDB database. Re-exported from the idb library.

import { indexedDBConnect } from '@datastream/indexeddb'

const db = await indexedDBConnect('my-database', 1, {
  upgrade(db) {
    db.createObjectStore('records', { keyPath: 'id' })
  },
})

indexedDBReadStream Readable async

Reads records from an IndexedDB object store as a stream.

Options

OptionTypeDefaultDescription
dbIDBDatabaseDatabase connection from indexedDBConnect
storestringObject store name
indexstringOptional index name
keyIDBKeyRangeOptional key range filter

Example

import { pipeline } from '@datastream/core'
import { indexedDBConnect, indexedDBReadStream } from '@datastream/indexeddb'
import { objectCountStream } from '@datastream/object'

const db = await indexedDBConnect('my-database', 1)
const count = objectCountStream()

const result = await pipeline([
  await indexedDBReadStream({ db, store: 'records' }),
  count,
])

console.log(result)
// { count: 100 }

indexedDBWriteStream Writable async

Writes records to an IndexedDB object store.

Options

OptionTypeDefaultDescription
dbIDBDatabaseDatabase connection from indexedDBConnect
storestringObject store name

Example

import { pipeline, createReadableStream } from '@datastream/core'
import { indexedDBConnect, indexedDBWriteStream } from '@datastream/indexeddb'

const db = await indexedDBConnect('my-database', 1)

await pipeline([
  createReadableStream([
    { id: 1, name: 'Alice' },
    { id: 2, name: 'Bob' },
  ]),
  await indexedDBWriteStream({ db, store: 'records' }),
])