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

fuming

Package Overview
Dependencies
Maintainers
0
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

fuming

Fuming is a lightweight and efficient database management system built with TypeScript. It simplifies database operations with type safety, robust query handling, and seamless integration into any modern web application. Fuming is designed as an npm packa

  • 1.0.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
0
Created
Source

Fuming Database

npm version TypeScript License: GPL v3

Fuming is a lightweight and efficient database management system built with TypeScript. It simplifies database operations with type safety, robust query handling, and seamless integration into any modern web application.

Features

  • 🚀 Lightweight & Fast: Minimal overhead with efficient file-based storage
  • 📘 TypeScript Support: Full type safety and excellent IDE integration
  • 🔄 CRUD Operations: Complete set of Create, Read, Update, and Delete operations
  • 🛠️ Easy Setup: Simple installation and minimal configuration
  • 📁 Collection-based: Organize your data in collections, similar to MongoDB
  • 🆔 Automatic ID Generation: Built-in unique ID generation for documents

Installation

npm install fuming

Quick Start

import { connect, collection } from 'fuming';

// Connect to database
const db = await connect('mydb');

// Create a collection
collection.create('users');

// Insert data
await collection.insert('users', {
  name: 'John Doe',
  email: 'john@example.com',
  age: 30
});

// Find all documents
const users = collection.find('users');
console.log(users);

API Reference

Connection

connect(dbname: string): Promise<string[]>

Connects to a database. Creates the database directory if it doesn't exist.

const collections = await connect('mydb');
// Returns array of existing collection names

Collections

collection.create(collection: string)

Creates a new collection.

collection.create('users');
collection.find(collection: string)

Retrieves all documents from a collection.

const users = collection.find('users');
collection.insert(collection: string, newData: any)

Inserts a new document into a collection. Automatically generates a unique _id.

await collection.insert('users', {
  name: 'Jane Doe',
  email: 'jane@example.com'
});
collection.update(collection: string, { key, value }, newData)

Updates a document in a collection based on a key-value pair.

await collection.update('users', 
  { key: 'email', value: 'john@example.com' },
  {
    name: 'John Smith',
    email: 'john@example.com'
  }
);
collection.remove(collection: string, { key, value })

Removes a document from a collection based on a key-value pair.

await collection.remove('users', {
  key: 'email',
  value: 'john@example.com'
});
collection.destroy(collection: string)

Deletes an entire collection.

await collection.destroy('users');

Data Structure

Each document in a collection automatically receives a unique _id field when inserted:

{
  "_id": "lqr1k3j4x9ab2m5n",
  "name": "John Doe",
  "email": "john@example.com"
}

Example Usage

Creating a User Management System

import { connect, collection } from 'fuming';

async function initializeDatabase() {
  // Connect to database
  await connect('userdb');
  
  // Create users collection
  collection.create('users');
}

async function addUser(userData: any) {
  return await collection.insert('users', userData);
}

async function updateUserEmail(oldEmail: string, newData: any) {
  return await collection.update('users', 
    { key: 'email', value: oldEmail },
    newData
  );
}

async function deleteUser(email: string) {
  return await collection.remove('users', {
    key: 'email',
    value: email
  });
}

// Usage
initializeDatabase()
  .then(() => addUser({
    name: 'John Doe',
    email: 'john@example.com',
    role: 'admin'
  }))
  .catch(console.error);

Notes

  • All collection operations are file-based and synchronous
  • Data is stored in JSON format
  • Each database is a directory containing JSON files for each collection
  • The database name is stored in the environment variables
  • Collection names map directly to JSON files

Contributing

Contributions are welcome! Please feel free to submit a Pull Request. By contributing to this project, you agree to abide by its terms.

License

This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.

GNU GPL v3

Fuming is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.

Keywords

FAQs

Package last updated on 06 Nov 2024

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