npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

goblin-cache

v1.1.0

Published

A multi-level front-end caching library designed to efficiently manage data across different storage layers. It incorporates in-memory storage, IndexedDB, and Web Workers

Downloads

4

Readme

GoblinCache

Overview

GoblinCache is a multi-level front-end caching library designed to efficiently manage data across different storage layers. It incorporates in-memory storage, IndexedDB, and Web Workers for optimized performance. The package is highly configurable and suited for applications where data accessibility, performance, and efficiency are crucial.

The idea is to eventually extract a generic resource retrieval and caching promise escalation chain

Features

  • Multi-Level Caching: Three levels of caching: In-Memory, IndexedDB, and custom workers.
  • Highly Configurable: Batch sizes, maximum number of batches, and timeouts can be adjusted for each layer.
  • LRU Eviction: Least Recently Used (LRU) eviction algorithm for the in-memory layer.
  • Promotion and Eviction: Cache items are promoted or evicted between layers automatically based on configuration.
  • Batch Processing: Handles multiple requests in a single batch to maximize throughput.
  • Concurrency Control: Utilizes Web Workers for concurrent processing without blocking the main thread.
  • Singleton Pattern: Ensures a single instance of the cache manager.

Installation

Install via npm:

npm install goblin-cache

Usage

Initialization

Import the package and initialize with options:

import { GoblinCache, GoblinCacheOptions } from 'goblin-cache';

const options: GoblinCacheOptions = {
  // ...
};
const cacheManager = GoblinCache.getInstance(options);

Get and Set Data

Get and set data using the get and set methods.

cacheManager.get("some-key").then((data) => {
  // Do something
});

cacheManager.set("some-key", someValue);

Configuration Options

Create a GoblinCacheOptions object to configure GoblinCache:

const options: GoblinCacheOptions = {
  memLOptions: { batchSize: 1, maxBatches: 50, timeoutMs: 0 },
  dbLOptions: { batchSize: 50, maxBatches: 5, timeoutMs: 200 },
  hvLOptions: { batchSize: 10, maxBatches: 6, timeoutMs: 50 },
  dbOptions: { dbName: 'blobDb', objectStore: 'objectStore' },
  spawn: () => new Worker(),
  memoryLimit: 500,
};

Web Worker

Provide your custom Web Worker through the spawn option for the custom worker layer.

API

GoblinCache

  • getInstance(options: GoblinCacheOptions): Gets a singleton instance of the cache manager.
  • get(key: string): Retrieves a value by key from the cache.
  • set(key: string, value: any): Sets a key-value pair in the cache.

ProcessingStack

  • triggerQueue(): Triggers the queue for processing.

HarvesterPool

  • harvest(paths: string[]): Executes worker tasks based on the given paths.

Contributing

Please read CONTRIBUTING.md for details.

License

This project is licensed under the MIT License. See the LICENSE.md file for details.