@dashkite/joy
Version:
*The simplicity of Lodash with the functional flair of Rambda.*
105 lines (104 loc) • 14.9 kB
JavaScript
var benchmark, debounce, expect, frame, measure, milliseconds, sleep, timer;
import { curry } from "./function";
timer = curry(function(interval, action) {
var id;
id = setTimeout(action, interval);
return function() {
return clearTimeout(id);
};
});
sleep = function(interval) {
return new Promise(function(resolve) {
return setTimeout(resolve, interval);
});
};
milliseconds = typeof performance !== "undefined" && performance !== null ? function() {
return performance.now();
} : function() {
return Date.now();
};
benchmark = async function(task) {
return (await measure("anonymous", task)).duration;
};
measure = function(name, task) {
return function({ finish, measure, result }) {
performance.mark(`${name}-start`);
finish = function() {
performance.mark(`${name}-finish`);
measure = performance.measure(`${name}`, `${name}-start`, `${name}-finish`);
return measure;
};
result = task();
if (result.then != null) {
return result.then(finish);
} else {
return finish();
}
}({});
};
debounce = function(last) {
return function(interval, f) {
return function() {
var now;
now = Date.now();
if (now - last > interval) {
last = now;
return f();
}
};
};
}(0);
// from Wayland
frame = function() {
return new Promise(function(resolve) {
return queueMicrotask(resolve);
});
};
// we're forced to use Date.now below
// because Node doesn't include it as a global
expect = function() {
var args;
args = arguments;
return function({ options, predicate, start, result, done }) {
[options, predicate] = function() {
switch(args.length){
case 1:
return [
{},
...args
];
case 2:
return args;
default:
throw new Error("expect: invalid arguments");
}
}();
if (options.timeout == null) {
options.timeout = 1000;
}
start = Date.now();
done = function() {
return (result = predicate()) || Date.now() - start > options.timeout;
};
result = false;
return new Promise(async function(resolve) {
while(!done()){
await sleep(1);
}
return resolve(result);
});
}({});
};
export { sleep, timer, milliseconds, benchmark, measure, debounce, frame, expect };
export default {
sleep,
timer,
milliseconds,
benchmark,
measure,
debounce,
frame,
expect
}; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL0BkYXNoa2l0ZS9qb3kvc3JjL3RpbWUuY29mZmVlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLElBQUEsU0FBQSxFQUFBLFFBQUEsRUFBQSxNQUFBLEVBQUEsS0FBQSxFQUFBLE9BQUEsRUFBQSxZQUFBLEVBQUEsS0FBQSxFQUFBOztBQUFBLE9BQUE7RUFBUSxLQUFSO0NBQUEsTUFBQTs7QUFFQSxLQUFBLEdBQVEsS0FBQSxDQUFNLFFBQUEsQ0FBQyxRQUFELEVBQVcsTUFBWCxDQUFBO0FBQ2QsTUFBQTtFQUFFLEVBQUEsR0FBSyxVQUFBLENBQVcsTUFBWCxFQUFtQixRQUFuQjtTQUNMLFFBQUEsQ0FBQSxDQUFBO1dBQUcsWUFBQSxDQUFjLEVBQWQ7RUFBSDtBQUZZLENBQU47O0FBSVIsS0FBQSxHQUFRLFFBQUEsQ0FBQyxRQUFELENBQUE7U0FDTixJQUFJLE9BQUosQ0FBWSxRQUFBLENBQUMsT0FBRCxDQUFBO1dBQWEsVUFBQSxDQUFXLE9BQVgsRUFBb0IsUUFBcEI7RUFBYixDQUFaO0FBRE07O0FBR1IsWUFBQSxHQUNLLDBEQUFILEdBQ0UsUUFBQSxDQUFBLENBQUE7U0FBRyxXQUFXLENBQUMsR0FBWixDQUFBO0FBQUgsQ0FERixHQUdFLFFBQUEsQ0FBQSxDQUFBO1NBQUcsSUFBSSxDQUFDLEdBQUwsQ0FBQTtBQUFIOztBQUVKLFNBQUEsR0FBWSxNQUFBLFFBQUEsQ0FBRSxJQUFGLENBQUE7U0FDVixDQUFFLENBQUEsTUFBTSxPQUFBLENBQVEsV0FBUixFQUFxQixJQUFyQixDQUFOLENBQUYsQ0FDRSxDQUFDO0FBRk87O0FBSVosT0FBQSxHQUFVLFFBQUEsQ0FBRSxJQUFGLEVBQVEsSUFBUixDQUFBO1NBQ0wsQ0FBQSxRQUFBLENBQUMsQ0FBRSxNQUFGLEVBQVUsT0FBVixFQUFtQixNQUFuQixDQUFELENBQUE7SUFDRCxXQUFXLENBQUMsSUFBWixDQUFpQixDQUFBLENBQUEsQ0FBSSxJQUFKLENBQUEsTUFBQSxDQUFqQjtJQUNBLE1BQUEsR0FBUyxRQUFBLENBQUEsQ0FBQTtNQUNQLFdBQVcsQ0FBQyxJQUFaLENBQWlCLENBQUEsQ0FBQSxDQUFJLElBQUosQ0FBQSxPQUFBLENBQWpCO01BQ0EsT0FBQSxHQUFVLFdBQVcsQ0FBQyxPQUFaLENBQW9CLENBQUEsQ0FBQSxDQUFJLElBQUosQ0FBQSxDQUFwQixFQUNSLENBQUEsQ0FBQSxDQUFJLElBQUosQ0FBQSxNQUFBLENBRFEsRUFDVyxDQUFBLENBQUEsQ0FBSSxJQUFKLENBQUEsT0FBQSxDQURYO2FBRVY7SUFKTztJQUtULE1BQUEsR0FBUyxJQUFBLENBQUE7SUFDVCxJQUFHLG1CQUFIO2FBQXVCLE1BQU0sQ0FBQyxJQUFQLENBQVksTUFBWixFQUF2QjtLQUFBLE1BQUE7YUFBaUQsTUFBQSxDQUFBLEVBQWpEOztFQVJDLENBQUEsRUFBK0IsQ0FBQTtBQUQxQjs7QUFXVixRQUFBLEdBQWMsQ0FBQSxRQUFBLENBQUUsSUFBRixDQUFBO1NBQ1osUUFBQSxDQUFFLFFBQUYsRUFBWSxDQUFaLENBQUE7V0FBbUIsUUFBQSxDQUFBLENBQUE7QUFDckIsVUFBQTtNQUFJLEdBQUEsR0FBTSxJQUFJLENBQUMsR0FBTCxDQUFBO01BQ04sSUFBRyxDQUFFLEdBQUEsR0FBTSxJQUFSLENBQUEsR0FBaUIsUUFBcEI7UUFDRSxJQUFBLEdBQU87ZUFDSixJQUZMOztJQUZpQjtFQUFuQjtBQURZLENBQUEsRUFBUyxHQTlCdkI7OztBQXdDQSxLQUFBLEdBQVEsUUFBQSxDQUFBLENBQUE7U0FDTixJQUFJLE9BQUosQ0FBWSxRQUFBLENBQUUsT0FBRixDQUFBO1dBQ1YsY0FBQSxDQUFlLE9BQWY7RUFEVSxDQUFaO0FBRE0sRUF4Q1I7Ozs7QUE4Q0EsTUFBQSxHQUFTLFFBQUEsQ0FBQSxDQUFBO0FBQ1QsTUFBQTtFQUFFLElBQUEsR0FBTztTQUNKLENBQUEsUUFBQSxDQUFDLENBQUUsT0FBRixFQUFXLFNBQVgsRUFBc0IsS0FBdEIsRUFBNkIsTUFBN0IsRUFBcUMsSUFBckMsQ0FBRCxDQUFBO0lBRUQsQ0FBRSxPQUFGLEVBQVcsU0FBWCxDQUFBO0FBQXlCLGNBQU8sSUFBSSxDQUFDLE1BQVo7QUFBQSxhQUNsQixDQURrQjtpQkFDWCxDQUFDLENBQUEsQ0FBRCxFQUFLLEdBQUEsSUFBTDtBQURXLGFBRWxCLENBRmtCO2lCQUVYO0FBRlc7VUFHbEIsTUFBTSxJQUFJLEtBQUosQ0FBVSwyQkFBVjtBQUhZOzs7TUFLekIsT0FBTyxDQUFDLFVBQVc7O0lBQ25CLEtBQUEsR0FBUSxJQUFJLENBQUMsR0FBTCxDQUFBO0lBRVIsSUFBQSxHQUFPLFFBQUEsQ0FBQSxDQUFBO2FBQ0wsQ0FBRSxNQUFBLEdBQVMsU0FBQSxDQUFBLENBQVgsQ0FBQSxJQUNFLENBQUMsQ0FBRSxJQUFJLENBQUMsR0FBTCxDQUFBLENBQUEsR0FBYSxLQUFmLENBQUEsR0FBeUIsT0FBTyxDQUFDLE9BQWxDO0lBRkc7SUFJUCxNQUFBLEdBQVM7V0FFVCxJQUFJLE9BQUosQ0FBWSxNQUFBLFFBQUEsQ0FBRSxPQUFGLENBQUE7QUFDVixhQUF1QixDQUFDLElBQUEsQ0FBQSxDQUF4QjtRQUFFLENBQUEsTUFBTSxLQUFBLENBQU0sQ0FBTixDQUFOO01BQUY7YUFDQSxPQUFBLENBQVEsTUFBUjtJQUZVLENBQVo7RUFoQkMsQ0FBQSxFQUErQyxDQUFBO0FBRjNDOztBQXNCVCxPQUFBO0VBQ0UsS0FERjtFQUVFLEtBRkY7RUFHRSxZQUhGO0VBSUUsU0FKRjtFQUtFLE9BTEY7RUFNRSxRQU5GO0VBT0UsS0FQRjtFQVFFLE1BUkY7OztBQVdBLE9BQUEsUUFBZSxDQUNiLEtBRGEsRUFFYixLQUZhLEVBR2IsWUFIYSxFQUliLFNBSmEsRUFLYixPQUxhLEVBTWIsUUFOYSxFQU9iLEtBUGEsRUFRYixNQVJhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjdXJyeX0gZnJvbSBcIi4vZnVuY3Rpb25cIlxuXG50aW1lciA9IGN1cnJ5IChpbnRlcnZhbCwgYWN0aW9uKSAtPlxuICBpZCA9IHNldFRpbWVvdXQoYWN0aW9uLCBpbnRlcnZhbClcbiAgLT4gY2xlYXJUaW1lb3V0KCBpZCApXG5cbnNsZWVwID0gKGludGVydmFsKSAtPlxuICBuZXcgUHJvbWlzZSAocmVzb2x2ZSkgLT4gc2V0VGltZW91dCByZXNvbHZlLCBpbnRlcnZhbFxuXG5taWxsaXNlY29uZHMgPVxuICBpZiBwZXJmb3JtYW5jZT9cbiAgICAtPiBwZXJmb3JtYW5jZS5ub3coKVxuICBlbHNlXG4gICAgLT4gRGF0ZS5ub3coKVxuXG5iZW5jaG1hcmsgPSAoIHRhc2sgKSAtPlxuICAoIGF3YWl0IG1lYXN1cmUgXCJhbm9ueW1vdXNcIiwgdGFzayApXG4gICAgLmR1cmF0aW9uXG5cbm1lYXN1cmUgPSAoIG5hbWUsIHRhc2sgKSAtPlxuICBkbyAoeyBmaW5pc2gsIG1lYXN1cmUsIHJlc3VsdCB9ID0ge30pIC0+XG4gICAgcGVyZm9ybWFuY2UubWFyayBcIiN7IG5hbWUgfS1zdGFydFwiXG4gICAgZmluaXNoID0gLT5cbiAgICAgIHBlcmZvcm1hbmNlLm1hcmsgXCIjeyBuYW1lIH0tZmluaXNoXCJcbiAgICAgIG1lYXN1cmUgPSBwZXJmb3JtYW5jZS5tZWFzdXJlIFwiI3sgbmFtZSB9XCIsIFxuICAgICAgICBcIiN7IG5hbWUgfS1zdGFydFwiLCBcIiN7IG5hbWUgfS1maW5pc2hcIlxuICAgICAgbWVhc3VyZVxuICAgIHJlc3VsdCA9IHRhc2soKVxuICAgIGlmIHJlc3VsdC50aGVuPyB0aGVuICggcmVzdWx0LnRoZW4gZmluaXNoICkgZWxzZSBmaW5pc2goKVxuXG5kZWJvdW5jZSA9IGRvICggbGFzdCA9IDAgKSAtPlxuICAoIGludGVydmFsLCBmICkgLT4gLT5cbiAgICBub3cgPSBEYXRlLm5vdygpXG4gICAgaWYgKCBub3cgLSBsYXN0ICkgPiBpbnRlcnZhbFxuICAgICAgbGFzdCA9IG5vd1xuICAgICAgZG8gZlxuXG5cbiMgZnJvbSBXYXlsYW5kXG5cbmZyYW1lID0gLT5cbiAgbmV3IFByb21pc2UgKCByZXNvbHZlICkgLT5cbiAgICBxdWV1ZU1pY3JvdGFzayByZXNvbHZlXG5cbiMgd2UncmUgZm9yY2VkIHRvIHVzZSBEYXRlLm5vdyBiZWxvd1xuIyBiZWNhdXNlIE5vZGUgZG9lc24ndCBpbmNsdWRlIGl0IGFzIGEgZ2xvYmFsXG5leHBlY3QgPSAtPlxuICBhcmdzID0gYXJndW1lbnRzXG4gIGRvICh7IG9wdGlvbnMsIHByZWRpY2F0ZSwgc3RhcnQsIHJlc3VsdCwgZG9uZSB9ID0ge30pIC0+XG5cbiAgICBbIG9wdGlvbnMsIHByZWRpY2F0ZSBdID0gc3dpdGNoIGFyZ3MubGVuZ3RoXG4gICAgICB3aGVuIDEgdGhlbiBbe30sIGFyZ3MuLi4gXVxuICAgICAgd2hlbiAyIHRoZW4gYXJnc1xuICAgICAgZWxzZSB0aHJvdyBuZXcgRXJyb3IgXCJleHBlY3Q6IGludmFsaWQgYXJndW1lbnRzXCJcblxuICAgIG9wdGlvbnMudGltZW91dCA/PSAxMDAwXG4gICAgc3RhcnQgPSBEYXRlLm5vdygpXG5cbiAgICBkb25lID0gLT5cbiAgICAgICggcmVzdWx0ID0gcHJlZGljYXRlKCkpIHx8XG4gICAgICAgICgoIERhdGUubm93KCkgLSBzdGFydCApID4gb3B0aW9ucy50aW1lb3V0IClcblxuICAgIHJlc3VsdCA9IGZhbHNlXG5cbiAgICBuZXcgUHJvbWlzZSAoIHJlc29sdmUgKSAtPlxuICAgICAgKCBhd2FpdCBzbGVlcCAxKSB3aGlsZSAhZG9uZSgpXG4gICAgICByZXNvbHZlIHJlc3VsdFxuXG5leHBvcnQge1xuICBzbGVlcFxuICB0aW1lclxuICBtaWxsaXNlY29uZHNcbiAgYmVuY2htYXJrXG4gIG1lYXN1cmVcbiAgZGVib3VuY2VcbiAgZnJhbWVcbiAgZXhwZWN0XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgc2xlZXBcbiAgdGltZXJcbiAgbWlsbGlzZWNvbmRzXG4gIGJlbmNobWFya1xuICBtZWFzdXJlXG4gIGRlYm91bmNlXG4gIGZyYW1lXG4gIGV4cGVjdFxufVxuIl19
//# sourceURL=/@dashkite/joy/src/time.coffee
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlcyI6WyIvQGRhc2hraXRlL2pveS9zcmMvdGltZS5jb2ZmZWUiXSwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y3Vycnl9IGZyb20gXCIuL2Z1bmN0aW9uXCJcblxudGltZXIgPSBjdXJyeSAoaW50ZXJ2YWwsIGFjdGlvbikgLT5cbiAgaWQgPSBzZXRUaW1lb3V0KGFjdGlvbiwgaW50ZXJ2YWwpXG4gIC0+IGNsZWFyVGltZW91dCggaWQgKVxuXG5zbGVlcCA9IChpbnRlcnZhbCkgLT5cbiAgbmV3IFByb21pc2UgKHJlc29sdmUpIC0+IHNldFRpbWVvdXQgcmVzb2x2ZSwgaW50ZXJ2YWxcblxubWlsbGlzZWNvbmRzID1cbiAgaWYgcGVyZm9ybWFuY2U/XG4gICAgLT4gcGVyZm9ybWFuY2Uubm93KClcbiAgZWxzZVxuICAgIC0+IERhdGUubm93KClcblxuYmVuY2htYXJrID0gKCB0YXNrICkgLT5cbiAgKCBhd2FpdCBtZWFzdXJlIFwiYW5vbnltb3VzXCIsIHRhc2sgKVxuICAgIC5kdXJhdGlvblxuXG5tZWFzdXJlID0gKCBuYW1lLCB0YXNrICkgLT5cbiAgZG8gKHsgZmluaXNoLCBtZWFzdXJlLCByZXN1bHQgfSA9IHt9KSAtPlxuICAgIHBlcmZvcm1hbmNlLm1hcmsgXCIjeyBuYW1lIH0tc3RhcnRcIlxuICAgIGZpbmlzaCA9IC0+XG4gICAgICBwZXJmb3JtYW5jZS5tYXJrIFwiI3sgbmFtZSB9LWZpbmlzaFwiXG4gICAgICBtZWFzdXJlID0gcGVyZm9ybWFuY2UubWVhc3VyZSBcIiN7IG5hbWUgfVwiLCBcbiAgICAgICAgXCIjeyBuYW1lIH0tc3RhcnRcIiwgXCIjeyBuYW1lIH0tZmluaXNoXCJcbiAgICAgIG1lYXN1cmVcbiAgICByZXN1bHQgPSB0YXNrKClcbiAgICBpZiByZXN1bHQudGhlbj8gdGhlbiAoIHJlc3VsdC50aGVuIGZpbmlzaCApIGVsc2UgZmluaXNoKClcblxuZGVib3VuY2UgPSBkbyAoIGxhc3QgPSAwICkgLT5cbiAgKCBpbnRlcnZhbCwgZiApIC0+IC0+XG4gICAgbm93ID0gRGF0ZS5ub3coKVxuICAgIGlmICggbm93IC0gbGFzdCApID4gaW50ZXJ2YWxcbiAgICAgIGxhc3QgPSBub3dcbiAgICAgIGRvIGZcblxuXG4jIGZyb20gV2F5bGFuZFxuXG5mcmFtZSA9IC0+XG4gIG5ldyBQcm9taXNlICggcmVzb2x2ZSApIC0+XG4gICAgcXVldWVNaWNyb3Rhc2sgcmVzb2x2ZVxuXG4jIHdlJ3JlIGZvcmNlZCB0byB1c2UgRGF0ZS5ub3cgYmVsb3dcbiMgYmVjYXVzZSBOb2RlIGRvZXNuJ3QgaW5jbHVkZSBpdCBhcyBhIGdsb2JhbFxuZXhwZWN0ID0gLT5cbiAgYXJncyA9IGFyZ3VtZW50c1xuICBkbyAoeyBvcHRpb25zLCBwcmVkaWNhdGUsIHN0YXJ0LCByZXN1bHQsIGRvbmUgfSA9IHt9KSAtPlxuXG4gICAgWyBvcHRpb25zLCBwcmVkaWNhdGUgXSA9IHN3aXRjaCBhcmdzLmxlbmd0aFxuICAgICAgd2hlbiAxIHRoZW4gW3t9LCBhcmdzLi4uIF1cbiAgICAgIHdoZW4gMiB0aGVuIGFyZ3NcbiAgICAgIGVsc2UgdGhyb3cgbmV3IEVycm9yIFwiZXhwZWN0OiBpbnZhbGlkIGFyZ3VtZW50c1wiXG5cbiAgICBvcHRpb25zLnRpbWVvdXQgPz0gMTAwMFxuICAgIHN0YXJ0ID0gRGF0ZS5ub3coKVxuXG4gICAgZG9uZSA9IC0+XG4gICAgICAoIHJlc3VsdCA9IHByZWRpY2F0ZSgpKSB8fFxuICAgICAgICAoKCBEYXRlLm5vdygpIC0gc3RhcnQgKSA+IG9wdGlvbnMudGltZW91dCApXG5cbiAgICByZXN1bHQgPSBmYWxzZVxuXG4gICAgbmV3IFByb21pc2UgKCByZXNvbHZlICkgLT5cbiAgICAgICggYXdhaXQgc2xlZXAgMSkgd2hpbGUgIWRvbmUoKVxuICAgICAgcmVzb2x2ZSByZXN1bHRcblxuZXhwb3J0IHtcbiAgc2xlZXBcbiAgdGltZXJcbiAgbWlsbGlzZWNvbmRzXG4gIGJlbmNobWFya1xuICBtZWFzdXJlXG4gIGRlYm91bmNlXG4gIGZyYW1lXG4gIGV4cGVjdFxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHNsZWVwXG4gIHRpbWVyXG4gIG1pbGxpc2Vjb25kc1xuICBiZW5jaG1hcmtcbiAgbWVhc3VyZVxuICBkZWJvdW5jZVxuICBmcmFtZVxuICBleHBlY3Rcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxJQUFBLFNBQUEsRUFBQSxRQUFBLEVBQUEsTUFBQSxFQUFBLEtBQUEsRUFBQSxPQUFBLEVBQUEsWUFBQSxFQUFBLEtBQUEsRUFBQTtBQUFBLE9BQUEsRUFBUSxLQUFSLFFBQUEsYUFBQTtBQUVBLEtBQUEsR0FBUSxLQUFBLENBQU0sUUFBQSxDQUFDLFFBQUQsRUFBVyxNQUFYLENBQUE7SUFDZCxJQUFBO0lBQUUsRUFBQSxHQUFLLFVBQUEsQ0FBVyxNQUFYLEVBQW1CLFFBQW5CO1dBQ0wsUUFBQSxDQUFBLENBQUE7ZUFBRyxZQUFBLENBQWMsRUFBZDtJQUFIO0FBRlksQ0FBTjtBQUlSLEtBQUEsR0FBUSxRQUFBLENBQUMsUUFBRCxDQUFBO1dBQ04sSUFBSSxPQUFKLENBQVksUUFBQSxDQUFDLE9BQUQsQ0FBQTtlQUFhLFVBQUEsQ0FBVyxPQUFYLEVBQW9CLFFBQXBCO0lBQWIsQ0FBWjtBQURNO0FBR1IsWUFBQSxHQUNLLE9BQUEsZ0JBQUEsZUFBQSxnQkFBQSxJQUFILEdBQ0UsUUFBQSxDQUFBLENBQUE7V0FBRyxXQUFXLENBQUMsR0FBWixDQUFBO0FBQUgsQ0FERixHQUdFLFFBQUEsQ0FBQSxDQUFBO1dBQUcsSUFBSSxDQUFDLEdBQUwsQ0FBQTtBQUFIO0FBRUosU0FBQSxHQUFZLE1BQUEsUUFBQSxDQUFFLElBQUYsQ0FBQTtXQUNWLENBQUUsTUFBTSxPQUFBLENBQVEsV0FBUixFQUFxQixLQUFyQixDQUFOLENBQUYsQUFDRyxDQUFELE9BQUM7QUFGTztBQUlaLE9BQUEsR0FBVSxRQUFBLENBQUUsSUFBRixFQUFRLElBQVIsQ0FBQTtXQUNMLFFBQUEsQ0FBQyxFQUFFLE1BQUYs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