You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

38 lines
896 B
JavaScript

'use strict';
const defaultValue = require("default-value");
const createEventEmitter = require("create-event-emitter");
const pruneArray = require("./prune-array");
const clampZero = require("./clamp-zero");
module.exports = function createPasteStore(options = {}) {
let pastes = [];
let counter = 0;
let pasteLimit = defaultValue(options.pasteLimit, 250);
return createEventEmitter({
add: function addPaste(pasteData) {
let paste = Object.assign({
counter: counter++
}, pasteData);
pastes.push(paste);
this.emit("added", paste);
pruneArray(pastes, pasteLimit);
},
since: function getPastesSince(counter) {
return pastes.filter((paste) => {
return (paste.counter > counter);
});
},
all: function getAllPastes() {
return pastes;
},
last: function getLastPastes(count) {
return pastes.slice(clampZero(pastes.length - count));
}
});
};