simple-inventory-tracker
Version: 
A minimal inventory management utility for tracking items, quantities, and stock levels
82 lines (70 loc) • 1.6 kB
JavaScript
class InventoryTracker {
  constructor() {
    this.items = new Map();
  }
  addItem(id, name, quantity = 0, minStock = 5) {
    this.items.set(id, { 
      name, 
      quantity, 
      minStock, 
      lastUpdated: new Date() 
    });
    return this.items.get(id);
  }
  deleteItem(id) {
    return this.items.delete(id);
  }
  updateQuantity(id, quantity) {
    if (!this.items.has(id)) {
      throw new Error(`Item ${id} not found`);
    }
    const item = this.items.get(id);
    item.quantity = quantity;
    item.lastUpdated = new Date();
    return item;
  }
  getItem(id) {
    return this.items.get(id);
  }
  getAllItems() {
    return Array.from(this.items.entries()).map(([id, item]) => ({ 
      id, 
      ...item 
    }));
  }
  getLowStockItems() {
    return this.getAllItems().filter(item => item.quantity <= item.minStock);
  }
  searchItems(query) {
    return this.getAllItems().filter(item => 
      item.name.toLowerCase().includes(query.toLowerCase())
    );
  }
  exportData() {
    return {
      items: this.getAllItems(),
      exportDate: new Date(),
      totalItems: this.items.size
    };
  }
  importData(data) {
    if (data.items) {
      this.items.clear();
      data.items.forEach(item => {
        this.items.set(item.id, {
          name: item.name,
          quantity: item.quantity,
          minStock: item.minStock,
          lastUpdated: new Date(item.lastUpdated || new Date())
        });
      });
    }
  }
  clear() {
    this.items.clear();
  }
  getItemCount() {
    return this.items.size;
  }
}
module.exports = InventoryTracker;