Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

lowstorage

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

lowstorage

Zero-dependency, simple pseudo-database on Cloudflare R2, inspired by lowdb.

  • 0.0.3
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

lowstorage | for Workers using R2

Simple, zero-dependency, object pseudo-database for Cloudflare Workers using R2 buckets, strongly inspired by lowdb 🤗(https://github.com/typicode/lowdb/).
Cloudflare GitHub issues GitHub license Contributions welcome

[github] [npm]

Sponsors

GitHub Sponsors

Become a sponsor and have your company logo here 👉 GitHub Sponsors

Usage

import lowstorage from 'lowstorage';
// Initialize object and get users collection
const usersCol = await lowstorage(env, 'MY_TESTING_BUCKET').collection('users');

// Add new user
// you can provide _id or it will be generated as crypto.randomUUID();  -> https://developers.cloudflare.com/workers/runtime-apis/web-crypto/
const newUser = await usersCol.insert({
	name: 'Kevin',
	gender: 'whatever',
	posts: [],
});

// Show all users
const allUsers = usersCol.find({});

// Find user by ID and update name
await usersCol.update({ _id: id }, { name: 'Carlos' });

Features

  • Lightweight
  • Minimalist
  • Familiar API
  • plain JavaScript
  • Zero-dependency

Install

npm install lowstorage
Why Cloudflare R2?

Seamless migration, robust free tier, Nonee gress fees. Dive into the future of data storage with Cloudflare R2 https://developers.cloudflare.com/r2/

Included features in Forever Free R2 tier
  • Storage: 10 GB/month
  • Class A operations (mutate state): 1,000,000 / month
  • Class B operations (read state): 10,000,000 / month
  • more details on pricing R2

Setup & binding R2 to your worker

  1. In the Cloudflare console, go to R2 (left navigation)
  2. Click Create Bucket
  3. Enter any bucket name you want (we use testing-lowstorage)
  4. Click Create Bucket (bottom)
  5. Go to 'Worker & Pages'
  6. Click on your worker (or create new one)
  7. Go to 'Settings' -> Variables
  8. In section 'R2 Bucket Bindings' click EDIT VARIABLES
  9. Hit '+ Add Binding' and pick variable name (we use 'MY_TESTING_BUCKET') and select your R2 bucket
  10. Click 'Save & Deploy'

Check out wrangler.toml from examples

Insctructions with pictures https://github.com/gfodor/p2pcf/blob/master/INSTALL.md#set-up-the-r2-bucket

API

  • insert(doc)

    • Input: A single object or an array of objects.
    • Behavior: Inserts the given document(s) into the collection. Each document is assigned a unique identifier if it doesn't already have one.
    • Returns: A promise that resolves when the insert operation is complete.
  • find(query)

    • Input: A query object (e.g., {_id: id}).
    • Behavior: Searches for documents that match the query.
    • Returns: A promise that resolves to an array of matching documents.
  • findOne(query)

    • Input: A query object.
    • Behavior: Similar to find, but it returns only the first matching document.
    • Returns: A promise that resolves to a single document or null if no match is found.
  • update(query, update)

    • Input: A query object and an update object.
    • Behavior: Updates all documents that match the query with the provided update data.
    • Returns: A promise that resolves to the number of documents updated.
  • updateOne(query, update)

    • Input: A query object and an update object.
    • Behavior: Updates the first document that matches the query with the provided update data.
    • Returns: A promise that resolves to 1 if a document is updated, otherwise 0.
  • delete(query)

    • Input: A query object.
    • Behavior: Deletes documents that match the query.
    • Returns: A promise that resolves to the number of documents deleted.
  • remove()

    • Behavior: Removes all documents from the collection.
    • Returns: A promise that resolves to the number of documents removed.
  • count(query)

    • Input: A query object (optional).
    • Behavior: Counts the number of documents that match the query. If no query is provided, it counts all documents in the collection.
    • Returns: A promise that resolves to the count of matching documents.

Examples

Check out dummy examples Run:

cd examples
npm install
npm run dev

Limitations

  • no test coverage, use carefully
  • response speed (no benchmarks so far)

Contribution

Feel free to dive in! Open an issue or submit PRs.

Standard Readme follows the Contributor Covenant Code of Conduct.

License

MIT

Keywords

FAQs

Package last updated on 03 Dec 2023

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

  • 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