@c-zw/accessor
TypeScript icon, indicating that this package has built-in type declarations

0.2.0 • Public • Published

Accessor

Defined multi-level data store and access by near first.

  • Get near first data

  • Set and delete at same time

  • Accessor implement Accessible can be a member of others Accessor

  • Easy to use

Installation

npm install @c-zw/accessor

API

constructor(accessors: Accessible[], options?: AccessorOptions)

interface AccessorOptions { 
    strict?: boolean // strict near first order when set, sync data
}

Example

use Map

async function test1() {
    const localCache = new Map();
    const localCache2 = new Map();
    const localCache3 = new Map();
    const accessor = new Accessor([localCache, localCache2, localCache3]);

    await accessor.set('1', 1);
    console.log(`accessor get key 1: ${await accessor.get('1')}`);
    console.log(`localCache get key 1: ${localCache.get('1')}`);
    console.log(`localCache2 get key 1: ${localCache2.get('1')}`);
    console.log(`localCache3 get key 1: ${localCache3.get('1')}`);
}

test1();

// accessor get key 1: 1
// localCache get key 1: 1
// localCache2 get key 1: 1
// localCache3 get key 1: 1

Accessible interface

export interface Accessible {
    get: (key: string) => any | undefined | Promise<any | undefined>;
    set: (key: string, value: any, ttl?: number) => any | Promise<any>;
    delete: (key: string) => any | Promise<any>;
    serialize?: (data: any) => any;
    deserialize?: (serializeData: any) => any;
}

Customize defined

class LocalCache<T> implements Accessible {
    map: Map<string, T>;

    constructor() {
        this.map = new Map();
    }

    get(key: string) {
        return this.map.get(key);
    }

    set(key: string, value: T) {
        this.map.set(key, value);
    }

    delete(key: string) {
        this.map.delete(key);
    }

    serialize(data: any) {
        return JSON.stringify(data)
    }

    deserialize(data: any) {
        return JSON.parse(data);
    }
}

Package Sidebar

Install

npm i @c-zw/accessor

Weekly Downloads

0

Version

0.2.0

License

ISC

Unpacked Size

9.31 kB

Total Files

7

Last publish

Collaborators

  • c-zw