Comparing version 0.2.0 to 0.3.0
@@ -152,2 +152,7 @@ const after = require('after') | ||
, ttl = function (db, key, ttl, callback) { | ||
if (ttl > 0 && key !== null && key !== undefined) | ||
ttlon(db, key, ttl, callback) | ||
} | ||
, del = function (db, key, options, callback) { | ||
@@ -230,2 +235,3 @@ var done | ||
db[options.methodPrefix + 'batch'] = batch.bind(null, db) | ||
db[options.methodPrefix + 'ttl'] = ttl.bind(null, db) | ||
// we must intercept close() | ||
@@ -232,0 +238,0 @@ db['close'] = close.bind(null, db) |
@@ -8,3 +8,3 @@ { | ||
] | ||
, "version" : "0.2.0" | ||
, "version" : "0.3.0" | ||
, "homepage" : "https://github.com/rvagg/node-level-ttl" | ||
@@ -14,3 +14,3 @@ , "authors" : [ | ||
] | ||
, "keywords" : [ "leveldb", "levelup", "ttl" ] | ||
, "keywords" : [ "leveldb", "levelup", "ttl", "whoa dude!" ] | ||
, "main" : "./level-ttl.js" | ||
@@ -22,5 +22,5 @@ , "repository" : { | ||
, "dependencies" : { | ||
"after" : "~0.7.0" | ||
, "level-sublevel" : "~4.7.0" | ||
, "xtend" : "~2.0.3" | ||
"after" : "~0.8.1" | ||
, "level-sublevel" : "~4.7.1" | ||
, "xtend" : "~2.0.6" | ||
} | ||
@@ -31,4 +31,4 @@ , "peerDependencies" : { | ||
"tap" : "*" | ||
, "level" : "*" | ||
, "rimraf" : "~2.1.4" | ||
, "level" : "*" | ||
, "rimraf" : "*" | ||
} | ||
@@ -39,2 +39,2 @@ , "scripts" : { | ||
, "license" : "MIT" | ||
} | ||
} |
@@ -32,2 +32,9 @@ # Level TTL [![Build Status](https://secure.travis-ci.org/rvagg/node-level-ttl.png)](http://travis-ci.org/rvagg/node-level-ttl) | ||
Alternatively, for a lower write-footprint you can use the `ttl()` method that is added to your LevelUP instance which can serve to insert or update a ttl for any given key in the database (even if that key doesn't exist but may in the future! Crazy!). | ||
```js | ||
db.put('foo', 'bar', function (err) { /* .. */ }) | ||
db.ttl(1000 * 60 * 60, function (err) { /* .. */ }) | ||
``` | ||
**Level TTL** uses an internal scan every 10 seconds by default, this limits the available resolution of your TTL values, possibly delaying a delete for up to 10 seconds. The resolution can be tuned by passing the `'checkFrequency'` option to the `ttl()` initialiser. | ||
@@ -34,0 +41,0 @@ |
41
test.js
@@ -234,2 +234,43 @@ const test = require('tap').test | ||
ltest('test prolong entry life with ttl(key, ttl)', function (db, t, createReadStream) { | ||
var ttlBar = function () { | ||
db.ttl('bar', 40) | ||
return Date.now() | ||
} | ||
, verify = function (base, delay) { | ||
setTimeout(function () { | ||
db2arr(createReadStream, t, function (err, arr) { | ||
t.notOk(err, 'no error') | ||
var ts = base + 37 | ||
, i = 0 | ||
// allow +/- 3ms leeway, allow for processing speed and Node timer inaccuracy | ||
for (; i < 6 && arr[3] && arr[3].value; i++) { | ||
if (arr[3] && arr[3].value == String(ts)) | ||
break | ||
ts++ | ||
} | ||
t.deepEqual(arr, [ | ||
{ key: 'bar', value: 'barvalue' } | ||
, { key: 'foo', value: 'foovalue' } | ||
, { key: 'ÿttlÿ' + ts + 'ÿbar', value: 'bar' } | ||
, { key: 'ÿttlÿbar', value: String(ts) } | ||
]) | ||
}) | ||
}, delay) | ||
} | ||
, retest = function (delay) { | ||
setTimeout(function () { | ||
var base = ttlBar() | ||
verify(base, 10) | ||
}, delay) | ||
} | ||
, i | ||
db.put('foo', 'foovalue') | ||
db.put('bar', 'barvalue') | ||
for (i = 0; i < 200; i += 20) | ||
retest(i) | ||
setTimeout(t.end.bind(t), 300) | ||
}) | ||
ltest('test del', function (db, t, createReadStream) { | ||
@@ -236,0 +277,0 @@ var verify = function (base, delay) { |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
26338
539
54
+ Addedafter@0.8.2(transitive)
- Removedafter@0.7.0(transitive)
Updatedafter@~0.8.1
Updatedlevel-sublevel@~4.7.1
Updatedxtend@~2.0.6