UNPKG

goodreads-bookshelf

Version:
48 lines (47 loc) 1.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BaseBookshelf = void 0; var shelf_1 = require("./shelf"); var BaseBookshelf = /** @class */ (function () { function BaseBookshelf(books) { this._books = books; } BaseBookshelf.prototype.readBooks = function () { return this._books.filter(function (book) { return book.shelf() === shelf_1.Shelf.READ; }).sort(this.sortRecentlyFinishedBooksFirst); }; BaseBookshelf.prototype.readingBooks = function () { return this._books .filter(function (book) { return book.shelf() === shelf_1.Shelf.CURRENTLYREADING; }) .sort(this.sortRecentlyStartedBooksFirst); }; BaseBookshelf.prototype.readBooksGroupedByYear = function () { var yearlyBooks = {}; this.readBookYears().forEach(function (year) { yearlyBooks[year] = []; }); this.readBooks().forEach(function (book) { yearlyBooks[book.yearFinished()].push(book); }); return yearlyBooks; }; BaseBookshelf.prototype.readBookYears = function () { var years = []; this.readBooks().forEach(function (book) { var shouldAdd = !Number.isNaN(book.yearFinished()) && !years.includes(book.yearFinished()); if (shouldAdd) { years.push(book.yearFinished()); } }); return years.sort(function (a, b) { return a - b; }); }; BaseBookshelf.prototype.sortRecentlyFinishedBooksFirst = function (a, b) { return b.dateFinished().getTime() - a.dateFinished().getTime(); }; BaseBookshelf.prototype.sortRecentlyStartedBooksFirst = function (a, b) { return b.dateStarted().getTime() - a.dateStarted().getTime(); }; return BaseBookshelf; }()); exports.BaseBookshelf = BaseBookshelf;