Socket
Socket
Sign inDemoInstall

cacache

Package Overview
Dependencies
54
Maintainers
2
Versions
100
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 8.0.0 to 9.0.0

20

CHANGELOG.md

@@ -5,2 +5,22 @@ # Change Log

<a name="9.0.0"></a>
# [9.0.0](https://github.com/zkat/cacache/compare/v8.0.0...v9.0.0) (2017-04-28)
### Bug Fixes
* **memoization:** actually use the LRU ([0e55dc9](https://github.com/zkat/cacache/commit/0e55dc9))
### Features
* **memoization:** memoizers can be injected through opts.memoize (#90) ([e5614c7](https://github.com/zkat/cacache/commit/e5614c7))
### BREAKING CHANGES
* **memoization:** If you were passing an object to opts.memoize, it will now be used as an injected memoization object. If you were only passing booleans and other non-objects through that option, no changes are needed.
<a name="8.0.0"></a>

@@ -7,0 +27,0 @@ # [8.0.0](https://github.com/zkat/cacache/compare/v7.1.0...v8.0.0) (2017-04-22)

19

get.js

@@ -22,4 +22,4 @@ 'use strict'

byDigest
? memo.get.byDigest(cache, key)
: memo.get(cache, key)
? memo.get.byDigest(cache, key, opts)
: memo.get(cache, key, opts)
)

@@ -50,5 +50,5 @@ if (memoized && opts.memoize !== false) {

if (opts.memoize && byDigest) {
memo.put.byDigest(cache, key, res)
memo.put.byDigest(cache, key, res, opts)
} else if (opts.memoize) {
memo.put(cache, entry, res.data)
memo.put(cache, entry, res.data, opts)
}

@@ -64,3 +64,3 @@ return res

let stream = through()
const memoized = memo.get(cache, key)
const memoized = memo.get(cache, key, opts)
if (memoized && opts.memoize !== false) {

@@ -90,3 +90,3 @@ stream.on('newListener', function (ev, cb) {

}, cb => {
memoData && memo.put(cache, entry, Buffer.concat(memoData, memoLength))
memoData && memo.put(cache, entry, Buffer.concat(memoData, memoLength), opts)
cb()

@@ -118,3 +118,3 @@ })

opts = opts || {}
const memoized = memo.get.byDigest(cache, integrity)
const memoized = memo.get.byDigest(cache, integrity, opts)
if (memoized && opts.memoize !== false) {

@@ -137,3 +137,4 @@ const stream = through()

integrity,
Buffer.concat(memoData, memoLength)
Buffer.concat(memoData, memoLength),
opts
)

@@ -151,3 +152,3 @@ cb()

opts = opts || {}
const memoized = memo.get(cache, key)
const memoized = memo.get(cache, key, opts)
if (memoized && opts.memoize !== false) {

@@ -154,0 +155,0 @@ return BB.resolve(memoized.entry)

@@ -8,19 +8,21 @@ 'use strict'

let MEMOIZED
clearMemoized()
let MEMOIZED = new LRU({
max: MAX_SIZE,
maxAge: MAX_AGE,
length: (entry, key) => {
if (key.startsWith('key:')) {
return entry.data.length
} else if (key.startsWith('digest:')) {
return entry.length
}
}
})
module.exports.clearMemoized = clearMemoized
function clearMemoized () {
var old = MEMOIZED
MEMOIZED = new LRU({
max: MAX_SIZE,
maxAge: MAX_AGE,
length: (entry, key) => {
if (key.startsWith('key:')) {
return entry.data.length
} else if (key.startsWith('digest:')) {
return entry.length
}
}
const old = {}
MEMOIZED.forEach((v, k) => {
old[k] = v
})
MEMOIZED.reset()
return old

@@ -30,20 +32,40 @@ }

module.exports.put = put
function put (cache, entry, data) {
MEMOIZED[`key:${cache}:${entry.key}`] = { entry, data }
putDigest(cache, entry.integrity, data)
function put (cache, entry, data, opts) {
pickMem(opts).set(`key:${cache}:${entry.key}`, { entry, data })
putDigest(cache, entry.integrity, data, opts)
}
module.exports.put.byDigest = putDigest
function putDigest (cache, integrity, data) {
MEMOIZED[`digest:${cache}:${integrity}`] = data
function putDigest (cache, integrity, data, opts) {
pickMem(opts).set(`digest:${cache}:${integrity}`, data)
}
module.exports.get = get
function get (cache, key) {
return MEMOIZED[`key:${cache}:${key}`]
function get (cache, key, opts) {
return pickMem(opts).get(`key:${cache}:${key}`)
}
module.exports.get.byDigest = getDigest
function getDigest (cache, integrity) {
return MEMOIZED[`digest:${cache}:${integrity}`]
function getDigest (cache, integrity, opts) {
return pickMem(opts).get(`digest:${cache}:${integrity}`)
}
class ObjProxy {
constructor (obj) {
this.obj = obj
}
get (key) { return this.obj[key] }
set (key, val) { this.obj[key] = val }
}
function pickMem (opts) {
if (!opts || !opts.memoize) {
return MEMOIZED
} else if (opts.memoize.get && opts.memoize.set) {
return opts.memoize
} else if (typeof opts.memoize === 'object') {
return new ObjProxy(opts.memoize)
} else {
return MEMOIZED
}
}
{
"name": "cacache",
"version": "8.0.0",
"version": "9.0.0",
"cache-version": {

@@ -5,0 +5,0 @@ "content": "2",

@@ -16,3 +16,3 @@ 'use strict'

if (opts.memoize) {
memo.put(cache, entry, data)
memo.put(cache, entry, data, opts)
}

@@ -53,3 +53,3 @@ return res.integrity

if (opts.memoize) {
memo.put(cache, entry, Buffer.concat(memoData, memoTotal))
memo.put(cache, entry, Buffer.concat(memoData, memoTotal), opts)
}

@@ -56,0 +56,0 @@ stream.emit('integrity', integrity)

@@ -421,5 +421,5 @@ # cacache [![npm version](https://img.shields.io/npm/v/cacache.svg)](https://npm.im/cacache) [![license](https://img.shields.io/npm/l/cacache.svg)](https://npm.im/cacache) [![Travis](https://img.shields.io/travis/zkat/cacache.svg)](https://travis-ci.org/zkat/cacache) [![AppVeyor](https://ci.appveyor.com/api/projects/status/github/zkat/cacache?svg=true)](https://ci.appveyor.com/project/zkat/cacache) [![Coverage Status](https://coveralls.io/repos/github/zkat/cacache/badge.svg?branch=latest)](https://coveralls.io/github/zkat/cacache?branch=latest)

There is no facility for limiting memory usage short of
[`cacache.clearMemoized()`](#clear-memoized), so be mindful of the sort of data
you ask to get memoized!
If `opts.memoize` is an object or a `Map`-like (that is, an object with `get`
and `set` methods), it will be written to instead of the global memoization
cache.

@@ -426,0 +426,0 @@ Reading from existing memoized data can be forced by explicitly passing

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc