Launch Week Day 5: Introducing Reachability for PHP.Learn More
Socket
Book a DemoSign in
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
1.0.5
to
2.0.0
+18
-26
package.json
{
"name": "cache-io",
"version": "1.0.5",
"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"
"name": "cache-io",
"version": "2.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://github.com/npm/deprecate-holder.git"
},
"author": "",
"license": "ISC",
"bugs": {
"url": "https://github.com/npm/deprecate-holder/issues"
},
"homepage": "https://github.com/npm/deprecate-holder#readme",
"dependencies": {}
}
+3
-189

@@ -1,191 +0,5 @@

[![Logo cache-io](https://github.com/negezor/cache-io/blob/master/LogoCacheIo.png?raw=true)](https://www.npmjs.com/package/cache-io)
# Deprecated Package
# CACHE-IO
Простой модуль кэш-памяти
This package is no longer supported and has been deprecated. To avoid malicious use, npm is hanging on to the package name.
## Инициализация / Начало работы
### Установка модуля
```shell
npm install cache-io --save
```
### Инициализация одного экземпляра
```javascript
'use strict';
const Cache = require('cache-io');
const cache = new Cache;
```
### Конфигурация модуля
В конструктор можно передать параметры
##### expires
Тип: `number`
По умолчанию: `60`
Стандартное время истечений таймера в секундах
##### prolong
Тип: `boolean`
По умолчанию: `true`
Нужно ли обновлять таймер при использование метода `get`
```javascript
const cache = new Cache({
expires: 60 * 30,
prolong: false
});
```
### Установка значения в кэш
Метод `set` принимает два аргумента
##### Первый аргумент
Тип: `string` или `object`
Ключ кэша, может быть передан объект с обязательным свойством `key`
##### Второй аргумент
Тип: `object`
Параметры установки кэша, может быть передан в первый аргумент с обязательным свойством `key`. Полное описание возможных свойств объекта ниже
======
#### Объект с аргументами
##### key
Тип: `string`
Ключ кэша, обязателен если объект передан первым аргументом
##### value
Тип: `mixed`
Значение которое хранится в кэше, оно так же возвращается при использование текущего метода тем самым ссылаясь на него
Если передать функцию вызывается при необходимости установить кэш
##### expires
Тип: `integer`
Время в секундах когда кэш истечёт, можно не указывать и использовать значение по умолчанию
##### remove
Тип: `function`
Функция которая вызывается при истечёние времени кэша
В функцию приходят аргументы ключ и значение `(key,value)`
```javascript
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.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
```
### Обновление таймера кэша
Обноваляет таймер кэша, используется в методе `get`
##### Первый аргумент
Тип: `string`
Ключ кэша, при удачном обновление таймера `true`, если объект уже удалён или отсутствует `false`
```javascript
cache.update(<Key>); // -> boolean
```
### Удаления значения в кэша
Удаляет старое значение в кэше, вызывает при использование метода `set`
##### Первый аргумент
Тип: `string`
Ключ кэша, при удачном удаление `true`, если объект уже удалён или отсутствует `false`
```javascript
cache.remove(<Key>); // -> boolean
```
### Полна очистка кэша
Удаляет все ключи кэша, а так же будут вызваны функции `remove` если были установлены в `set`
```javascript
cache.clear(); // -> this
```
### Проверка кэша на наличие
##### Первый аргумент
Тип: `string`
Ключ кэша
```javascript
cache.has(<Key>); // -> boolean
```
### Получение списка ключей кэша
```javascript
cache.keys(); // -> array
```
Please contact support@npmjs.com if you have questions about this package.
'use strict';
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);
}
/**
* Проверяет наличие кэша
*
* @param string key
*
* @return boolean
*/
has (key) {
return key in this.storage;
}
/**
* Возвращает ключи
*
* @return array
*/
keys () {
return Object.keys(this.storage);
}
/**
* Устанавливает значение
*
* @param string key
* @param object params
*
* @return mixed
*/
set (key,params) {
if (typeof key === 'object') {
params = key;
key = params.key;
}
this.remove(key);
if (!('expires' in params)) {
params.expires = this.expires;
}
params.expires *= 1000;
if (typeof params.value === 'function') {
params.value = params.value();
}
var store = this.storage[key] = {
value: params.value,
expires: params.expires,
timeout: this._remove(key,params.expires)
};
if ('remove' in params) {
store.remove = params.remove;
}
return store.value;
}
/**
* Получает значение из кэша
*
* @param string key
* @param object params
*
* @return mixed
*/
get (key,params = {}) {
if (typeof key === 'object') {
params = key;
key = params.key;
}
if (this.has(key)) {
if (('update' in params && params.update === true) || this.prolong) {
this.update();
delete params.update;
}
return this.storage[key].value;
}
if ('default' in params && params.default === true) {
return params.value || null;
}
if (!('value' in params)) {
return null;
}
return this.set(key,params);
}
/**
* Обновляет таймер
*
* @param string key
*
* @return boolean
*/
update (key) {
if (!this.has(key)) {
return false;
}
var store = this.storage[key];
clearTimeout(store.timeout);
store.timeout = this._remove(key,store.expires);
return true;
}
/**
* Удаляет значение из кэша
*
* @param string key
*
* @return boolean
*/
remove (key) {
if (!this.has(key)) {
return false;
}
var store = this.storage[key];
clearTimeout(store.timeout);
if ('remove' in store) {
store.remove(key,store.value);
}
delete this.storage[key];
return true;
}
/**
* Очищает полностью кэш
*
* @return this
*/
clear () {
for (var key in this.storage) {
this.remove(key);
}
return this;
}
/**
* Возвращает setTimeout для удаления ключа
*
* @param string key
* @param object params
*
* @return mixed
*/
_remove (key,expires) {
return setTimeout(
() => {
this.remove(key);
},
expires
);
}
};