Skip to content

evan-brass/sqlite.js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sqlite.js

Another SQLite wrapper library.

Features:

  • Incremental Blob IO via Readable / Writable Streams
  • Custom VFSs with async implementations
  • Coroutines / "multithreading" via Asyncify stack switching.
    • Enables cancelling a query: Conn.prototype.interrupt()
    • Run multiple queries without needing SharedArrayBuffer or Worker
    • This library compiles SQLite with multithreading support
  • An API with minimal construction / destruction. Prefers 'borrowing' APIs that automatically aquire and release resources.
    • ConnPool.prototype.borrow()
    • Once webbrowsers get disaposable/asyncdisposable, then I might rework the APIs to better reflect the underlying SQLite objects.
  • Tagged template literals
  • Everything is optional: only include what you need.
    • Custom VFSs are optional (if you just want in-memory)
    • Custom scalar-functions are optional (if you don't need incremental blob IO, etc.)
    • Pool is optional
  • Extensible
    • Modify how values are bound via the Bindable and Resultable traits in sql.mjs/value.js
    • Write your own implementation of custom VFS support. Look at sql.mjs/vfs/custom.js to learn how.
    • Directly call sqlite3 functions via sql.mjs/sqlite.js and sql.mjs/sqlite_def.js
  • Two VFS implementations
    • An HTTP VFS that uses HTTP range queries (if supported by the server) to incrementally query a database
      • Read-only
      • Works in browsers or Deno (uses the fetch api)
    • A browser VFS that operates on FileSystemFileHandle's and FileSystemDirectoryHandle's
      • Uses a virtual filesystem composed of file handles stored in an indexedDB database

About

Another javascript SQLite wrapper.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages