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

cache-io

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

cache-io - npm Package Compare versions

Comparing version

to
1.0.4

194

index.js
'use strict';
module.exports = function(){
this.cache = Object.create(null);
module.exports = class Cache {
/**
* Конструктор
*
* @param object setting Настройки
*/
constructor (setting) {
setting = setting || {};
this.storage = Object.create(null);
if (!('prolong' in setting)) {
setting.prolong = true;
}
if (!('expires' in setting)) {
setting.expires = 60;
}
this.prolong = setting.prolong === true;
this.expires = parseInt(setting.expires);
}
/**
* Проверяет элемент на наличие
* Проверяет наличие кэша
*

@@ -13,91 +33,105 @@ * @param string key

*/
this.has = (key) => {
return !!this.cache[key];
};
has (key) {
return key in this.storage;
}
/**
* Удаляет ключ
* Возвращает ключи
*
* @param string key
* @return array
*/
this._remove = (key) => {
return () => {
this.remove(key);
};
};
keys () {
return Object.keys(this.storage);
}
/**
* Устанавливает ключ
* Устанавливает значение
*
* @param string key
* @param integer time
* @param mixed value
* @param string key
* @param object params
*
* @return object
* @return mixed
*/
this.set = (key,time,value,fn) => {
set (key,params) {
if (typeof key === 'object') {
params = key;
key = params.key;
}
this.remove(key);
if (!value) {
value = time;
time = 60;
if (!('expires' in params)) {
params.expires = this.expires;
}
time *= 1000;
params.expires *= 1000;
this.cache[key] = {
timeout: setTimeout(this._remove(key),time),
time: time,
value: value,
clear: fn
var store = this.storage[key] = {
value: params.value,
expires: params.expires,
timeout: this._remove(key,params.expires)
};
return this.cache[key].value;
};
if ('remove' in params) {
store.remove = params.remove;
}
return store.value;
}
/**
* Обновляет ключ
* Получает значение из кэша
*
* @param string key
* @param object params
*
* @return boolean
* @return mixed
*/
this.update = (key) => {
if (!this.has(key)) {
return false;
get (key,params) {
if (typeof key === 'object') {
params = key;
key = params.key;
}
var cache = this.cache[key];
if (this.has(key)) {
if (('update' in params && params.update === true) || this.prolong) {
this.update();
clearTimeout(cache.timeout);
cache.timeout = setTimeout(this._remove(key),cache.time);
delete params.update;
}
return true;
};
return this.storage[key].value;
}
if ('default' in params && params.default === true) {
return params.value || null;
}
return this.set(key,params);
}
/**
* Возвращает ключ
* Обновляет таймер
*
* @param string key
* @param mixed value
* @param integer time
* @param string key
*
* @return mixed
* @return boolean
*/
this.get = (key,value,time,fn) => {
update (key) {
if (!this.has(key)) {
if (!!time) {
this.set(key,time,value,fn);
}
return value || null;
return false;
}
this.update(key);
var store = this.storage[key];
return this.cache[key].value;
};
clearTimeout(store.timeout);
store.timeout = this._remove(key,store.expires);
return true;
}
/**
* Удаляет ключ
* Удаляет значение из кэша
*

@@ -108,3 +142,3 @@ * @param string key

*/
this.remove = (key) => {
remove (key) {
if (!this.has(key)) {

@@ -114,36 +148,44 @@ return false;

let cache = this.cache[key];
var store = this.storage[key];
clearInterval(cache.timeout);
clearTimeout(store.timeout);
if (cache.clear) {
cache.clear();
if ('remove' in store) {
store.remove(key,store.value);
}
delete this.cache[key];
delete this.storage[key];
return true;
};
}
/**
* Возвращает список ключей
* Очищает полностью кэш
*
* @return array
* @return this
*/
this.keys = () => {
return Object.keys(this.cache);
};
clear () {
for (var key in this.storage) {
this.remove(key);
}
return this;
}
/**
* Очищает хранилище
* Возвращает setTimeout для удаления ключа
*
* @return object
* @param string key
* @param object params
*
* @return mixed
*/
this.clear = () => {
for (let key in this.cache) {
this.remove(key);
}
return this;
};
_remove (key,expires) {
return setTimeout(
() => {
this.remove(key);
},
expires
);
}
};
{
"name": "cache-io",
"version": "1.0.3",
"description": "Memory cache for node js",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://github.com/UltraShock98/cache-io.git"
},
"keywords": [
"node",
"cache",
"memory",
"storage"
],
"author": "https://vk.com/id195624402",
"license": "MIT",
"bugs": {
"url": "https://github.com/UltraShock98/cache-io/issues"
},
"homepage": "https://github.com/UltraShock98/cache-io#readme"
"name": "cache-io",
"version": "1.0.4",
"description": "Simple memory cache for node js",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://github.com/negezor/cache-io.git"
},
"keywords": [
"memory",
"cache",
"io",
"timeout",
"simple",
"node",
"js"
],
"author": "https://vk.com/id195624402",
"license": "MIT",
"bugs": {
"url": "https://github.com/negezor/cache-io/issues"
},
"homepage": "https://github.com/negezor/cache-io#readme"
}

@@ -1,90 +0,189 @@

# cache-io
###Russian
Memory cache для node js
[![Logo cache-io](https://github.com/negezor/cache-io/blob/master/LogoCacheIo.png?raw=true)](https://www.npmjs.com/package/cache-io)
## Использование
Инициализация нового хранилища
# CACHE-IO
Простой модуль кэш-памяти
## Инициализация / Начало работы
### Установка модуля
```shell
npm install cache-io --save
```
### Инициализация одного экземпляра
```javascript
'use strict';
var cache = new (require('cache-io'));
const Cache = require('cache-io');
const cache = new Cache;
```
Проверка на наличие ключа
### Конфигурация модуля
В конструктор можно передать параметры
##### expires
Тип: `number`
По умолчанию: `60`
Стандартное время истечений таймера в секундах
##### prolong
Тип: `boolean`
По умолчанию: `true`
Нужно ли обновлять таймер при использование метода `get`
```javascript
cache.has('keyName');
// return boolean
const cache = new Cache({
expires: 60 * 30,
prolong: false
});
```
Установка значения кэша
* expire - 1000 * expire
* data - установка значения кэша
### Установка значения в кэш
Метод `set` принимает два аргумента
##### Первый аргумент
Тип: `string` или `object`
Ключ кэша, может быть передан объект с обязательным свойством `key`
##### Второй аргумент
Тип: `object`
Параметры установки кэша, может быть передан в первый аргумент с обязательным свойством `key`. Полное описание возможных свойств объекта ниже
======
#### Объект с аргументами
##### key
Тип: `string`
Ключ кэша, обязателен если объект передан первым аргументом
##### value
Тип: `mixed`
Значение которое хранится в кэше, оно так же возвращается при использование текущего метода тем самым ссылаясь на него
##### expires
Тип: `integer`
Время в секундах когда кэш истечёт, можно не указывать и использовать значение по умолчанию
##### remove
Тип: `function`
Функция которая вызывается при истечёние времени кэша
В функцию приходят аргументы ключ и значение `(key,value)`
```javascript
cache.set('keyName',expire,data,callback);
// return value || null
cache.set(<key>,{
value: <mixed>
}); // -> mixed
/* Или например так */
cache.set({
key: <key>,
value: <mixed>,
expires: 60 * 30, // 1:30 полтора часа
remove: (key,value) => {
console.log('Cache expired:',key,'-',value);
}
}); // -> mixed
```
Обновить значения истечения кэша
### Получение значения в кэш
Метод `get` принимает два аргумента
##### Первый аргумент
Тип: `string` или `object`
Ключ кэша, может быть передан объект с обязательным свойством `key`
##### Второй аргумент
Тип: `object`
Объект который наследует параметры из метода `set` и добавляя свои, подробнее ниже
======
#### Объект с аргументами
Полностью наследует из метода `set`
##### default
Тип: `boolean`
По умлочанию: `false`
Если `true` вместо установки нового кэша, возвращает свойство `value` или `null`
##### update
Тип: `boolean`
По умолчанию: наследует настройку `prolong` в конструкторе
Позволяет обновить значение таймера или же наоборот оставить всё как есть
```javascript
cache.update('keyName');
// return boolean
cache.get(<key>,{
value: <mixed>,
expires: 10,
remove: (key,value) => {
console.log('Cache expired:',key,'-',value);
}
}); // -> mixed
/* Или вернуть свойство value без установки значения кэша */
cache.get(<key>,{
value: <mixed>,
default: true
}); // -> mixed или null
```
Получить значение кэша, если нету то на сохранение:
* data - значение кэша
* time - истечение кэша
### Обновление таймера кэша
Обноваляет таймер кэша, используется в методе `get`
##### Первый аргумент
Тип: `string`
Ключ кэша, при удачном обновление таймера `true`, если объект уже удалён или отсутствует `false`
```javascript
cache.get('keyName'[,data,time,callback]);
// return mixed
cache.update(<Key>); // -> boolean
```
Удалить значение кэша
### Удаления значения в кэша
Удаляет старое значение в кэше, вызывает при использование метода `set`
##### Первый аргумент
Тип: `string`
Ключ кэша, при удачном удаление `true`, если объект уже удалён или отсутствует `false`
```javascript
cache.remove('keyName');
// return boolean
cache.remove(<Key>); // -> boolean
```
Возвращает ключи кэша
### Полна очистка кэша
Удаляет все ключи кэша, а так же будут вызваны функции `remove` если были установлены в `set`
```javascript
cache.keys();
// return array
cache.clear(); // -> this
```
# cache-io
###English
Memory cache for node js
## Using
Initialize the new storage
```javascript
'use strict';
### Проверка кэша на наличие
##### Первый аргумент
Тип: `string`
var cache = new (require('cache-io'));
```
Checking for key cache
Ключ кэша
```javascript
cache.has('keyName');
// return boolean
cache.has(<Key>); // -> boolean
```
Setting the cache values
* expire - 1000 * expire
* data - cache setting values
### Получение списка ключей кэша
```javascript
cache.set('keyName',expire,data,callback);
// return null
cache.keys(); // -> array
```
Refresh cache expiration value
```javascript
cache.update('keyName');
// return boolean
```
Get the value of the cache if it does not have to maintain:
* data - cache value
* time - cache expiration
```javascript
cache.get('keyName'[,data,time,callback]);
// return mixed
```
Remove the cache value
```javascript
cache.remove('keyName');
// return boolean
```
Returns the cache keys
```javascript
cache.keys();
// return array
```