Insert missing "feed" library into libraries table
Use Zotero.extendClass for Zotero.Collections
Convert itemType to itemTypeID in itemTreeView.js, not items.js
itemType comes from the column name in the tree view, so it makes most sense to do it there. Otherwise, Zotero was complaining about invalid field somewhere
Fix typo in item field caching code
Zotero.FeedItems no longer extends Zotero.Items
Extending Zotero.Items would create separate caches for FeedItems and Items, which are often used together as items (e.g. in itemTreeView). This causes the caches to diverge.
Instead, Zotero.FeedItems now supplements primary fields in Zotero.Items (unfortunately, that means joining the FeedItem table for all Item lookups. When data is loaded from the database, Zotero.FeedItems introduces additional logic to determine what kind of object to create (Item or FeedItem) and store it into a central cache.
Feeds no longer extends Collections
See previous commit for details
Fix collectionTreeView for last commit
Fix bug in collectionTreeView that caused tree row loss
...when collapsing/expanding group libraries
Semantic changes in item context menu code
Don't break when rejecting promise with no value
Implement read/unread functionality in feeds
(part 2)
Add Zotero.getMutex to return a promise for a mutex
A mutex promise is not resolved until previously issued mutexes have not released. A mutex promise resolves to an object with a single method - .release() - that _MUST_ be called when the mutex is no longer required.
Add Zotero.Promise.mutex to wrap functions in mutex environments
This guarantees that multiple calls to the same function do not execute until previous calls have finished
Rewrite ID tracker to allow for concurrent ID requests