43 lines
771 B
JavaScript
43 lines
771 B
JavaScript
|
'use strict';
|
||
|
|
||
|
var assert = require('assert');
|
||
|
|
||
|
var runtimes = new WeakMap();
|
||
|
|
||
|
function isFunction(fn) {
|
||
|
return typeof fn === 'function';
|
||
|
}
|
||
|
|
||
|
function lastRun(fn, timeResolution) {
|
||
|
assert(isFunction(fn), 'Only functions can check lastRun');
|
||
|
|
||
|
var time = runtimes.get(fn);
|
||
|
|
||
|
if (time == null) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
var resolution = parseInt(timeResolution, 10) || 1;
|
||
|
|
||
|
return time - (time % resolution);
|
||
|
}
|
||
|
|
||
|
function capture(fn, timestamp) {
|
||
|
assert(isFunction(fn), 'Only functions can be captured');
|
||
|
|
||
|
timestamp = timestamp || Date.now();
|
||
|
|
||
|
runtimes.set(fn, timestamp);
|
||
|
}
|
||
|
|
||
|
function release(fn) {
|
||
|
assert(isFunction(fn), 'Only functions can be captured');
|
||
|
|
||
|
runtimes.delete(fn);
|
||
|
}
|
||
|
|
||
|
lastRun.capture = capture;
|
||
|
lastRun.release = release;
|
||
|
|
||
|
module.exports = lastRun;
|