Pop open
for a single-file practice set that
touches every topic from this workshop.
There are no automated tests or solutions here. Use the comments in the file as
your checklist. A few success criteria to keep the vague spots concrete:
- Keep one
libraryobject withname,address,books,members, andeventsById - Include 6β8 books and 4β5 members, with at least two books sharing a tag, one
book without
checkedOutByMemberId, and one member withoutemail formatBook({ title, author, publishedYear })should return"{title} β {author} ({publishedYear})"(em dash between title and author)- Treat βrecent booksβ as
publishedYear >=the current calendar year minus5 memberNamesSortedshould be alphabetical ascendingmergeTags(...tagLists)should return unique tags (first-seen order is fine)findBooksByTags(books, tags)should require all requested tags to match


