+18
-26
| { | ||
| "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 @@ | ||
| [](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. |
-196
| '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 | ||
| ); | ||
| } | ||
| }; |
Empty package
Supply chain riskPackage does not contain any code. It may be removed, is name squatting, or the result of a faulty package publish.
Found 1 instance in 1 package
AI-detected possible typosquat
Supply chain riskAI has identified this package as a potential typosquat of a more popular package. This suggests that the package may be intentionally mimicking another package's name, description, or other metadata.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
No contributors or author data
MaintenancePackage does not specify a list of contributors or an author in package.json.
Found 1 instance in 1 package
No bug tracker
MaintenancePackage does not have a linked bug tracker in package.json.
Found 1 instance in 1 package
No website
QualityPackage does not have a website.
Found 1 instance in 1 package
1
-50%693
-92.96%2
-33.33%0
-100%6
-96.87%3
Infinity%