Update zotero:// extensions (report, timeline, etc.) for async DB, and more

- Protocol handler extensions can now handle promises and can also make
  data available as it's ready instead of all at once (e.g., reports now
  output one entry at a time)
- zotero:// URL syntaxes are now more consistent and closer to the web
  API (old URLs should work, but some may currently be broken)

Also:

- Code to generate server API, currently available for testing via
  zotero://data URLs but eventually moving to HTTP -- zotero://data URLs match
  web API URLs, with a different prefix for the personal library (/library vs.
  /users/12345)
- Miscellaneous fixes to data objects

Under the hood:

- Extensions now return an AsyncChannel, which is an nsIChannel implementation
  that takes a promise-yielding generator that returns a string,
  nsIAsyncInputStream, or file that will be used for the channel's data
- New function Zotero.Utilities.Internal.getAsyncInputStream() takes a
  generator that yields either promises or strings and returns an async input
  stream filled with the yielded strings
- Zotero.Router parsers URLs and extract parameters
- Zotero.Item.toResponseJSON()
This commit is contained in:
Dan Stillman 2014-09-08 16:51:05 -04:00
parent c5ee3651fe
commit 755ead2119
26 changed files with 1731 additions and 900 deletions

View file

@ -56,6 +56,7 @@ const xpcomFilesLocal = [
'libraryTreeView',
'collectionTreeView',
'annotate',
'api',
'attachments',
'cite',
'cookieSandbox',
@ -89,6 +90,7 @@ const xpcomFilesLocal = [
'proxy',
'quickCopy',
'report',
'router',
'schema',
'search',
'server',