Skip to content

This package provides a powerful Radix data storage and retrieval library for TypeScript. It allows you to efficiently store and manage structured data using a Radix tree data structure.

License

Notifications You must be signed in to change notification settings

orimay/radix-ts

Repository files navigation

radix-ts

radix-ts is a powerful Radix data storage and retrieval library for TypeScript. It allows you to efficiently store and manage structured data using a Radix tree data structure.

Installation

You can install radix-ts via npm or yarn:

npm install radix-ts
# or
yarn add radix-ts

Usage

To use radix-ts, you need to import and create an instance of the Radix class with your custom store implementation. Here's a basic example using an in-memory store:

import { Radix } from 'radix-ts';

class StoreInMemory {
  constructor() {
    this.store = new Map();
  }

  async get(key) {
    return this.store.get(key);
  }

  async set(key, value) {
    this.store.set(key, value);
  }

  async del(key) {
    this.store.delete(key);
  }

  toString(pathsOnly = false) {
    return JSON.stringify(
      pathsOnly
        ? [...this.store.keys()]
        : Object.fromEntries(this.store.entries()),
      null,
      2,
    );
  }
}

const store = new StoreInMemory();
const radix = new Radix(store);

(async () => {
  // Example key and value
  const key = 'example_key';
  const value = 'example_value';

  // Set a value for a key
  await radix.set(key, value);
  console.log(await radix.get(key)); // Should output 'example_value'
  console.log(await radix.has(key)); // Should output true

  // Delete a key
  await radix.del(key);
  console.log(await radix.get(key)); // Should output undefined
  console.log(await radix.has(key)); // Should output false

  await radix.set('example_key_a1', 1);
  await radix.set('example_key_a2', 1);
  await radix.set('example_key_b1', 1);
  await radix.set('example_key_b3', 3);
  await radix.set('example_key_b4', 4);
  await radix.set('example_key_b2', 2);
  await radix.set('example_key_b5', 5);

  // Loop through the data
  const query = {
    count: 4, // To retrieve four matching keys and values
    sort: 0, // Sort in descending order (1 for ascending)
    prefix: 'example_key_b', // Only return values with specified key prefix
  };

  // Use the loop method to iterate over keys and values
  for await (const [key, value] of radix.loop(query)) {
    console.log(value); // Outputs 5, 4, 3, 2
  }
})();

Make sure to replace the store implementation with your custom store if needed. The loop method is used to iterate over keys and values in the Radix store based on the provided query.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Authors

About

This package provides a powerful Radix data storage and retrieval library for TypeScript. It allows you to efficiently store and manage structured data using a Radix tree data structure.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published