Skip to content

๐Ÿ’พ Create data storage that uses a simple key-value method for Node, Browser, Deno, Bun, Cloudflare Workers

License

Notifications You must be signed in to change notification settings

nuzulul/kv-storage

Repository files navigation

kv-storage

๐Ÿ’พ Create data storage that uses a simple key-value method for Node, Browser, Deno, Bun, Cloudflare Workers

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 :

  • node use File System
  • deno use File System need --allow-read --allow-write
  • browser use IndexedDB
  • bun use File System
  • 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

Maintainers

Nuzulul Zulkarnain