Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

kv-storage

nuzulul72MIT0.0.9TypeScript support: included

💾 Create data storage that uses a simple key-value method for Node, Browser, Deno, Bun, Cloudflare Workers

nodejs, nosql, data-storage, data-store, node-js, nosql-database, file-storage, kv-storage, cloudflare-workers, file-database, storage, db

readme

kv-storage

💾 Create data storage that uses a simple key-value method for Node, Browser, Deno, Bun, Cloudflare Workers

NPM npm version

Demo

Features

  • ✅ 0 Dependencies
  • ✅ NoSQL Database
  • ✅ Lightwight

Installation

NPM (node, browser, deno, bun, cloudflare)

npm install kv-storage

CDN (browser)

<script src="https://cdn.jsdelivr.net/npm/kv-storage@0.0.9/dist/umd/kv-storage.js"></script>

Initialization

NPM

//Node & Bun CommonJS import style
const {KVStorage} = require('kv-storage')

//Node, Browser, Deno, Bun & Cloudflare ES Modules import style
import {KVStorage} from 'kv-storage'

//Deno import style
import {KVStorage} from 'npm:kv-storage@0.0.9'

//Node, Browser, Deno & Bun Initialization
const db = await KVStorage({
    runtime:'node', //node | browser | deno | bun
    storageName:'storage'
})

//Cloudflare Initialization
const db = await KVStorage({
    runtime:'cloudflare',
    storageName:'storage', //Cloudflare D1 database name
    databaseBinding:env.D1 //Cloudflare D1 database binding env
})

CDN

//Browser initialization if using CDN

const db = await KVStorage({
    runtime:'browser',
    storageName:'storage'
})

Example Usage

//Node & Bun CommonJS example
const {KVStorage} = require('kv-storage')

void async function main() {
    const db = await KVStorage({
        runtime:'node',//node | bun
        storageName:'storage'
    })

    console.log(await db.put('key','value'))
    console.log(await db.get('key'))
    console.log(await db.list())
    console.log(await db.delete('key'))
    console.log(await db.has('key'))
    console.log(await db.clear())
}()
//Node, Deno & Bun ES Modules example
import {KVStorage} from 'kv-storage'

void async function main() {
    const db = await KVStorage({
        runtime:'node',//node | deno | bun
        storageName:'storage'
    })

    console.log(await db.put('key','value'))
    console.log(await db.get('key'))
    console.log(await db.list())
    console.log(await db.delete('key'))
    console.log(await db.has('key'))
    console.log(await db.clear())
}()
<script src="https://cdn.jsdelivr.net/npm/kv-storage@0.0.9/dist/umd/kv-storage.js"></script>
<script>
//Browser using CDN example

void async function main() {
    const db = await KVStorage({
        runtime:'browser',
        storageName:'storage'
    })

    console.log(await db.put('key','value'))
    console.log(await db.get('key'))
    console.log(await db.list())
    console.log(await db.delete('key'))
    console.log(await db.has('key'))
    console.log(await db.clear())
}()
</script>
<script type="module">
//Browser ES Modules example
import {KVStorage} from 'https://cdn.jsdelivr.net/npm/kv-storage@0.0.9/dist/mjs/kv-storage.js'

void async function main() {
    const db = await KVStorage({
        runtime:'browser',
        storageName:'storage'
    })

    console.log(await db.put('key','value'))
    console.log(await db.get('key'))
    console.log(await db.list())
    console.log(await db.delete('key'))
    console.log(await db.has('key'))
    console.log(await db.clear())
}()
</script>
//Deno example
import {KVStorage} from 'npm:kv-storage@0.0.9'

void async function main() {
    const db = await KVStorage({
        runtime:'deno',
        storageName:'storage'
    })

    console.log(await db.put('key','value'))
    console.log(await db.get('key'))
    console.log(await db.list())
    console.log(await db.delete('key'))
    console.log(await db.has('key'))
    console.log(await db.clear())
}()
//Cloudflare workers example
import {KVStorage} from 'kv-storage'

export default { 
    async fetch(request, env) { 

        const db = await KVStorage({
            runtime:'cloudflare',
            storageName:'storage', //Cloudflare D1 database name
            databaseBinding:env.D1 //Cloudflare D1 database binding env
        })

        let data = []        
        data.push(await db.put('key','value'))
        data.push(await db.get('key'))
        data.push(await db.has('key'))
        data.push(await db.list())
        data.push(await db.delete('key'))
        data.push(await db.clear())
        return new Response(JSON.stringify(data, null, 2)) 
    } 
}

API Reference

Documentation

https://nuzulul.github.io/kv-storage/

Initialization parameters

await init({
    runtime,
    storageName,
    databaseBinding
})
runtime =  Javascript runtime 
storageName = Alphanumeric storage name
databaseBinding = Cloudflare only D1 database binding env

Supported runtime :

  • <input checked="" disabled="" type="checkbox"> node use File System
  • <input checked="" disabled="" type="checkbox"> deno use File System need --allow-read --allow-write
  • <input checked="" disabled="" type="checkbox"> browser use IndexedDB
  • <input checked="" disabled="" type="checkbox"> bun use File System
  • <input checked="" disabled="" type="checkbox"> cloudflare workers use D1 Database docs example wrangler.toml

Write key-value pairs

await put(key,value)

The put() method returns a Promise that you should await on to verify a successful update, resolve to true or false

Read key-value pairs

await get(key)

The get() method returns a promise you can await on to get the value, resolve to the value or false

List keys

await list()

Use a list operation to view all the keys that live in a given storage, return a promise which resolves with an object consist of:

  • keys = Array of keys
  • complete = true if operation complete

Delete key-value pairs

await delete(key)

To delete a key-value pair, call the delete() method, resolve to true or false

Has key-value pairs

await has(key)

To check for the existence of a key, resolve to true or false

Clear storage

await clear()

To delete all key value pairs, resolve to true or false

License

MIT