New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

db64

Package Overview
Dependencies
Maintainers
1
Versions
27
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

db64 - npm Package Compare versions

Comparing version 0.7.2 to 0.7.3

145

db64.js
const { isArray } = Array
const connections = []
const connections = []
const openDB = (name = 'default', storeNames) => new Promise((resolve, reject) => {
let db
/*
Creates a new database with given stores if the database and stores don't exist.
- name string The databse name
- storeNames array An array of store names
- Return object The given database
*/
const openDatabase = (name = 'default', storeNames) => new Promise((resolve, reject) => {
let database
try {
db = window.indexedDB.open(name, 1)
database = window.indexedDB.open(name, 1)
} catch (e) {

@@ -12,4 +19,10 @@ reject(e)

db.onupgradeneeded = e => {
const { result } = e.target
/*
db64 does not revolve around versioning. Therefore, this function will only run once
for every new set of databases created. Each set of databases and stores can only be
created once and cannot be modified. Therefore, all databases have a version of 1.
*/
database.onupgradeneeded = ({ target }) => {
const { result } = target
storeNames.forEach(storeName => {

@@ -23,15 +36,28 @@ if (!result.objectStoreNames.contains(storeName)) {

db.onsuccess = e => {
hasDBandStores = true
connections.push(db)
resolve(e.target.result)
/*
Connected databases are stored to be disconnected before deletion.
*/
database.onsuccess = ({ target }) => {
connections.push(database)
resolve(target.result)
}
db.onerror = e => reject(e.target.result)
return db
database.onerror = ({ target }) => reject(target.result)
return database
})
const setData = async (db, storeName, key, dataValue, entries) => {
/*
Sets an entry by a given key/value pair or a dataset of entries.
- database object Database object
- storeName string Store name
- key structured Key of entry
- dataValue structured Value of entry
- entries array | object Entries to set
- Return object db64 object
*/
const setData = async (database, storeName, key, dataValue, entries) => {
try {
const obStore = (db.transaction([storeName], 'readwrite')).objectStore(storeName)
const obStore = (database.transaction([storeName], 'readwrite')).objectStore(storeName)

@@ -52,5 +78,14 @@ if (entries) {

const getData = async (db, storeName, key, entries) => {
/*
Gets an entry by a given key/value pair or a dataset of entries.
- database object Database object
- storeName string Store name
- key structured Key of entry
- entries array | object Entries to get
- Return object A promise fulfilled with the queried data
*/
const getData = async (database, storeName, key, entries) => {
return new Promise((resolve) => {
const objectStore = (db.transaction([storeName])).objectStore(storeName)
const objectStore = (database.transaction([storeName])).objectStore(storeName)
let dataRequest

@@ -78,5 +113,13 @@ if (entries) {

const deleteData = async (db, storeName, key) => {
/*
Deletes an entry for a given store by key.
- database object Database object
- storeName string Store name
- key structured Key of entry
- Return object db64
*/
const deleteData = async (database, storeName, key) => {
try {
const objectStore = (db.transaction([storeName], 'readwrite')).objectStore(storeName)
const objectStore = (database.transaction([storeName], 'readwrite')).objectStore(storeName)
const cursorRequest = objectStore.openCursor()

@@ -98,5 +141,12 @@

const clearStore = (db, storeName) => {
/*
Empties a store.
- database object Database object
- storeName string Store name
- Return object A promise fulfilled with the queried data
*/
const clearStore = (database, storeName) => {
return new Promise((resolve, reject) => {
const objectStore = (db.transaction([storeName], 'readwrite')).objectStore(storeName)
const objectStore = (database.transaction([storeName], 'readwrite')).objectStore(storeName)
const objectStoreRequest = objectStore.clear()

@@ -109,2 +159,8 @@

/*
Deletes a given databse.
- name string Database to delete
- Return object A promise fulfilled with the queried data
*/
const deleteDB = name => {

@@ -116,8 +172,8 @@ return new Promise((resolve, reject) => {

deleteRequest.onerror = e => reject(new Error(`Error deleting database: ${e.target.error}`))
deleteRequest.onerror = ({ target }) => reject(new Error(`Error deleting database: ${target.error}`))
deleteRequest.onblocked = e => {
for (const db of connections) {
if (db.result.name === name) {
db.result.close()
deleteRequest.onblocked = () => {
for (const database of connections) {
if (database.result.name === name) {
database.result.close()
}

@@ -130,3 +186,5 @@ }

let hasDBandStores = false
/*
The db64 object */
const db64 = {

@@ -136,28 +194,35 @@ create: async (name, storeNames) => {

await openDB(name, storeNames, hasDBandStores)
await openDatabase(name, storeNames)
return db64
},
use: (name, storeName) => {
if (!hasDBandStores) return console.error('A database and store needs to be created first')
const request = indexedDB.open(name, 1)
request.onsuccess = (event) => {
const db = event.target.result
if (!db.objectStoreNames.contains(storeName)) {
console.error(`Store ${storeName} does not exist`)
}
}
return {
set: async (key, value) => openDB(name, storeName)
.then(db => setData(db, storeName, key, value))
set: async (key, value) => openDatabase(name, storeName)
.then(database => setData(database, storeName, key, value))
.catch(console.error),
setEntries: async (value) => openDB(name, storeName)
.then(db => setData(db, storeName, null, value, 'entries'))
setEntries: async (value) => openDatabase(name, storeName)
.then(database => setData(database, storeName, null, value, 'entries'))
.catch(console.error),
get: async key => openDB(name, storeName)
.then(db => getData(db, storeName, key))
get: async key => openDatabase(name, storeName)
.then(database => getData(database, storeName, key))
.catch(console.error),
getEntries: async (keys) => openDB(name, storeName)
.then(db => getData(db, storeName, keys, 'entries'))
getEntries: async (keys) => openDatabase(name, storeName)
.then(database => getData(database, storeName, keys, 'entries'))
.catch(console.error),
delete: async (keys) => openDB(name, storeName)
.then(db => deleteData(db, storeName, keys))
delete: async (keys) => openDatabase(name, storeName)
.then(database => deleteData(database, storeName, keys))
.catch(console.error)
}
},
clear: async (name, storeName) => openDB(name, storeName)
.then(db => clearStore(db, storeName))
clear: async (name, storeName) => openDatabase(name, storeName)
.then(database => clearStore(database, storeName))
.catch(console.error),

@@ -164,0 +229,0 @@ delete: async name => deleteDB(name)

{
"name": "db64",
"version": "0.7.2",
"version": "0.7.3",
"description": "A Practical IndexedDB API",

@@ -5,0 +5,0 @@ "main": "db64.js",

@@ -16,2 +16,3 @@ # db64

E.g.
```javascript

@@ -38,3 +39,2 @@ import db64 from './db64.js'

### Why IndexedDB, why not localStorage?

@@ -54,6 +54,14 @@ - Better performance

Install db64
**Install**
```
npm i db64
```
**Import**
```javascript
import db64 from 'db64.js' // ES (native)
// or
import db64 from 'db64' // ES
// or
const db64 = require('db64') // CommonJS
```

@@ -60,0 +68,0 @@ **Create a database with stores** _(string, array)_

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc