Giter Club home page Giter Club logo

kv-storage's Introduction

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/[email protected]/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:[email protected]'

//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/[email protected]/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/[email protected]/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:[email protected]'

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.