🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more →

@cacher/cacher

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@cacher/cacher - npm Package Compare versions

Comparing version

to
0.2.0

@@ -10,5 +10,10 @@ export interface IAdapterSetOptions {

}
export interface IAdapterIncrementOptions {
key: string;
value: number;
}
export interface IAdapter {
get(keys: string[]): Promise<(string | undefined)[]>;
set(keys: IAdapterSetOptions[]): Promise<void>;
increment(keys: IAdapterIncrementOptions[]): Promise<(number | undefined)[]>;
delete(keys: string[]): Promise<void>;

@@ -15,0 +20,0 @@ touch(keys: IAdapterTouchOptions[]): Promise<void>;

@@ -1,2 +0,2 @@

import { IAdapter, IAdapterSetOptions } from './adapter';
import { IAdapter, IAdapterIncrementOptions, IAdapterSetOptions } from './adapter';
export interface IMapLike<K, V> {

@@ -16,2 +16,3 @@ get(key: K): V | undefined;

set(keys: IAdapterSetOptions[]): Promise<void>;
increment(keys: IAdapterIncrementOptions[]): Promise<(number | undefined)[]>;
delete(keys: string[]): Promise<void>;

@@ -18,0 +19,0 @@ touch(): Promise<void>;

@@ -1,2 +0,2 @@

import { IAdapter, IAdapterSetOptions, IAdapterTouchOptions } from './adapter';
import { IAdapter, IAdapterIncrementOptions, IAdapterSetOptions, IAdapterTouchOptions } from './adapter';
export interface IUnionAdapterOptions {

@@ -14,2 +14,3 @@ adapters: [IAdapter, IAdapter];

set(keys: IAdapterSetOptions[]): Promise<void>;
increment(keys: IAdapterIncrementOptions[]): Promise<(number | undefined)[]>;
delete(keys: string[]): Promise<void>;

@@ -16,0 +17,0 @@ touch(keys: IAdapterTouchOptions[]): Promise<void>;

import { IAdapter } from './adapters';
import { ICacherOptions, ICacherGetOptions, ICacherSetOptions, ICacherTouchOptions, Serializer, Deserializer, AllowArray } from './types';
import { ICacherOptions, ICacherGetOptions, ICacherSetOptions, ICacherIncrementOptions, ICacherTouchOptions, Serializer, Deserializer, AllowArray } from './types';
export declare class Cacher<V = any> {

@@ -11,2 +11,3 @@ protected adapter: IAdapter;

set(rawKeys: AllowArray<ICacherSetOptions<V>>): Promise<void>;
increment(rawKeys: AllowArray<ICacherIncrementOptions>): Promise<(number | undefined)[]>;
delete(rawKeys: AllowArray<string>): Promise<void>;

@@ -13,0 +14,0 @@ touch(rawKeys: AllowArray<ICacherTouchOptions>): Promise<void>;

@@ -17,2 +17,9 @@ 'use strict';

}
async increment(keys) {
return keys.map(({ key, value }) => {
const nextValue = Number(this.storage.get(key) || 0) + value;
this.storage.set(key, String(nextValue));
return nextValue;
});
}
async delete(keys) {

@@ -74,2 +81,10 @@ for (const key of keys) {

}
async increment(keys) {
const [firstAdapter, secondAdapter] = this.adapters;
const [firstKeys, secondKeys] = await Promise.all([
firstAdapter.increment(keys),
secondAdapter.increment(keys)
]);
return keys.map((_, index) => firstKeys[index] || secondKeys[index]);
}
async delete(keys) {

@@ -117,2 +132,9 @@ await Promise.all(this.adapters.map(adapter => (adapter.delete(keys))));

}
increment(rawKeys) {
const keys = arraify(rawKeys);
return this.adapter.increment(keys.map(item => ({
key: this.getNamespaceKey(item.key),
value: item.value
})));
}
async delete(rawKeys) {

@@ -119,0 +141,0 @@ const keys = arraify(rawKeys);

@@ -20,3 +20,7 @@ import { IAdapter, IAdapterTouchOptions } from './adapters';

}
export interface ICacherIncrementOptions {
key: string;
value: number;
}
export interface ICacherTouchOptions extends IAdapterTouchOptions {
}
{
"name": "@cacher/cacher",
"version": "0.1.2",
"version": "0.2.0",
"description": "Modern implementation of key-value storage",

@@ -5,0 +5,0 @@ "license": "MIT",

@@ -93,2 +93,23 @@ <p align="center">

// Increment
// /!\ Cacher data must be float
await cacher.increment({
key: '1',
value: 5
});
// Multi set
await cacher.increment([
{
key: '1',
value: 2
},
{
key: '2',
value: 4
}
]);
// Delete

@@ -95,0 +116,0 @@