Socket
Book a DemoInstallSign in
Socket

@3fv/dexie-orm

Package Overview
Dependencies
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@3fv/dexie-orm

A sort-of ORM for Dexie

latest
Source
npmnpm
Version
1.0.12
Version published
Maintainers
1
Created
Source

Dexie ORM/Database Builder

Overview

Dexie Database Builder is a tool for quickly creating dexie database instances with class based schema's

It takes dexie, and applies a builder pattern to simplify configuration (sans upgrade at the moment, but that's fairly straightforward given the existing dexie support & the implementation of DexieDatabaseBuilder).

Examples

Node Node with single & tuple key example is available

React React example is available

import assert from "assert"
import dexieDatabaseBuilder from "@3fv/dexie-orm"

export class ExampleObject {
  id: string

  constructor(o: Partial<ExampleObject> = {}) {
    Object.assign(this, o)
  }
}


/**
 * Returns a promise with the value type
 * as follows:
 * 
 * Dexie & {
 *  objects: Dexie.Table<ExampleObject, "id">
 * }
 */ 
export async function createExampleDatabase() { 
  const db = await dexieDatabaseBuilder("example", 1)
    .table("objects", ExampleObject, "id" as const, "&id")
    .open()
  
  return db
}

/**
 * Add & read an `ExampleObject`
 */ 
export async function run() {
  const db = await createExampleDatabase() 
  
  // OBJECTS TABLE
  const objectsTable = db.objects
  
  // ADD
  const obj1 = new ExampleObject({
    id: "example-01"
  })

  const obj1Id = await objectsTable.add(obj1)
  const obj1Read = await objectsTable.get(obj1Id)
  assert(obj1Read instanceof ExampleObject, "not instance of ExampleObject")
  assert(obj1Read?.id === obj1?.id, "id's do not match")
  assert.deepEqual(obj1, obj1Read, "doesn't match deeply")

}

run().catch(err => {
  console.error("failed", err)
})

Notes

It's a properly configured hybrid module, so both commonjs & module/esm runtimes are fully supported & the resulting library will support tree shaking as long as side-effects are not created.

Which means, it'll work in the browser, with webpack or without, in node, with webpack or without (you will need a polyfill for indexeddb) AND will only include the base minimum in additional resources, because its modular implementation fully supports tree-shaking (I know I repeated myself).

Credit

Written with love in #NYC by @jglanz 3FV. Enjoy

Keywords

indexeddb

FAQs

Package last updated on 24 Jan 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.