Initial commit
commit
5345666120
@ -0,0 +1,2 @@
|
||||
yarn.lock
|
||||
node_modules
|
@ -0,0 +1,27 @@
|
||||
"use strict";
|
||||
|
||||
const Promise = require("bluebird");
|
||||
const ms = require("ms");
|
||||
const promiseDelaySince = require("@joepie91/promise-delay-every");
|
||||
|
||||
module.exports = function rateLimitedStream(interval) {
|
||||
let intervalInMilliseconds = (typeof interval === "number")
|
||||
? interval
|
||||
: ms(interval);
|
||||
|
||||
let delayer = promiseDelaySince(intervalInMilliseconds);
|
||||
|
||||
return {
|
||||
description: `rate-limited stream (1 per ${interval})`,
|
||||
read: (source) => {
|
||||
return Promise.try(() => {
|
||||
return delayer();
|
||||
}).then(() => {
|
||||
return source.read();
|
||||
});
|
||||
},
|
||||
abort: (source, reason) => {
|
||||
source.abort(reason);
|
||||
}
|
||||
}
|
||||
};
|
@ -0,0 +1,13 @@
|
||||
{
|
||||
"name": "@ppstreams/rate-limit",
|
||||
"version": "1.0.0",
|
||||
"main": "index.js",
|
||||
"repository": "git@git.cryto.net:joepie91/ppstreams-rate-limit.git",
|
||||
"author": "Sven Slootweg <admin@cryto.net>",
|
||||
"license": "WTFPL OR CC0-1.0",
|
||||
"dependencies": {
|
||||
"@joepie91/promise-delay-every": "^1.0.0",
|
||||
"bluebird": "^3.5.4",
|
||||
"ms": "^2.1.1"
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue