kysely-wasqlite-worker
TypeScript icon, indicating that this package has built-in type declarations

0.6.1 • Public • Published

kysely-wasqlite-worker

kysely dialect for wa-sqlite, execute sql in Web Worker, store data in OPFS or IndexedDB

No need to set response header like official wasm

Install

pnpm add kysely kysely-wasqlite-worker

Config

export interface WaSqliteWorkerDialectConfig {
  /**
   * db file name
   */
  fileName: string
  /**
   * prefer to store data in OPFS
   * @default true
   */
  preferOPFS?: boolean
  /**
   * wasqlite worker
   *
   * built-in: {@link useDefaultWorker}
   * @param supportModuleWorker if support { type: 'module' } in worker options
   * @example
   * import { useDefaultWorker } from 'kysely-wasqlite-worker'
   * @example
   * (support) => support
   *   ? new Worker(
   *       new URL('kysely-wasqlite-worker/worker-module', import.meta.url),
   *       { type: 'module', credentials: 'same-origin' }
   *     )
   *   : new Worker(
   *       new URL('kysely-wasqlite-worker/worker-classic', import.meta.url),
   *       { type: 'classic', name: 'test' }
   *     )
   */
  worker: Worker | ((supportModuleWorker: boolean) => Worker)
  /**
   * wasm URL
   *
   * built-in: {@link useDefaultWasmURL}
   * @param useAsyncWasm if need to use wa-sqlite-async.wasm
   * @example
   * import { useDefaultWasmURL } from 'kysely-wasqlite-worker'
   * @example
   * (useAsync) => useAsync
   *   ? 'https://cdn.jsdelivr.net/gh/rhashimoto/wa-sqlite@v0.9.9/dist/wa-sqlite-async.wasm'
   *   : new URL('kysely-wasqlite-worker/wasm-sync', import.meta.url).href
   */
  url: string | ((useAsyncWasm: boolean) => string)
  onCreateConnection?: (connection: DatabaseConnection) => Promisable<void>
}

Usage

import {
  WaSqliteWorkerDialect,
  generateDialectOptions,
  isIdbSupported,
  isModuleWorkerSupport,
  isOpfsSupported,
  useDefaultWasmURL,
  useDefaultWorker
} from 'kysely-wasqlite-worker'

const dialect = new WaSqliteWorkerDialect({
  fileName: 'test',
})

see more in playground

if throw error when using Vite to build, add worker config

export default defineConfig({
  // ...
  worker: {
    format: 'es',
  },
})

Limitation

Package Sidebar

Install

npm i kysely-wasqlite-worker

Weekly Downloads

6

Version

0.6.1

License

MIT

Unpacked Size

2.34 MB

Total Files

17

Last publish

Collaborators

  • subframe7536