- Added ParseQuery adapter.
- Fixed problem in the HTTP layer for pathInfo including the search/query.
- Fixes to CookieJar for regarding expiration and domain and path matching.
- Added
Normalize
middleware for request and response normalization.
-
Added
RedirectTrap
andCookieJar
for HTTP clients.var request = CookieJar(RedirectTrap(HTTP.request));
End
is nowCap
PostContent
is nowContentRequest
PostJson
is nowJsonRequest
FileConcat
is gone.ContentLength
is gone, permanently.- Reversed the argument order for
Headers
middleware, nowHeaders(nextApp, headers)
Additions and Upgrades
- Completed
{,Permanent,Temporary}{r,R}edirect{,Tree}
- Added
Tap(app, tap)
for intercepting requests - Added
Trap(app, trap)
for intercepting responses - Added
Proxy(url|app(request):request)
- Added
debug
flag toError
middle-ware - Added
Permanent
and caused all downstream-ware to respect therequest.permanent
flag to make redirects permanent instead of temporary (default). - Synchronized Q for a fix to thenable promise assimilation.
- Refurbished documentation and change log in Markdown format.
- Added some unit tests.
- Syntax fix that should have not made it to publication without testing.
- Added support for redirecting entire subtrees where symbolic links are involved, optionally permanently.
- Added an option to FileTree: redirectSymbolicLinks.
- Synchronized dependencies for FS.readLink.
- Synchronized dependencies for bug fix in IO stream close method.
- Switched internal MIME extension checker to use the "mime" NPM package, which appears to be more thorough on close inspection.
- Took advantage of Q-HTTP's ability to handle a promised body in the static file endware.
- Synchronized dependency for q-fs bug fix for binary encoding.
- Added
Headers
middleware for adding headers unspecified by an application. - Coordinated dependency revisions.
- Fixed a bug in the file server; 404 responses are now delivered promptly.
- Added
text/cache-manifest
to the.manifest
MIME mapping.
- WARNING: Removed
ContentLength
until further notice. It is presently broken. - Consolidated all content negotiation under a single
implementation and expanded the negotiable parameters to
include:
ContentType
Language
Charset
Encoding
Host
- Host "negotiation" is now predicated on the host name and the port, separated by colons, and negotiation wildcards are accepted.
- Added
Select
negotiation, wherein an app is selected and returned by a given function. - Added alternate log function and timestamp function parameters to Log middleware.
- Redirectors now accept a default redirect to the same
path, which is useful for a
GET
following aPUT
orPOST
. - Aliased the
ok
application maker tocontent
. Both names will remain going forward. - Applications now receive and are obligated to route the response object in addition to the request object.
- Renamed End route to Cap route. End is now deprecated.
- Renamed PostContent and PostJson to ContentRequest and JsonRequest respectively. The old names are depreacted aliases.
- Added
Time
Middleware - Added
visitor
andtabs
parameters, as inJSON.stringify
, to theJson
middleware. - Withdrew ambition to implement pattern matcher; someone else's job.
- Withdrew ambition to implement FileOverlay; better supported by chaining FileTree middleware end to end.
- Improved the logging format
- Replaced an assertion with a rejection, where Branch routers receive bad pathInfo.
- Added FileConcat content app
- Revised in coordination with q-http to be closer to JSGI compliance, using scriptName and pathInfo.
- Added request inspector test server.
- Fixed the README example code.
- Synced dependencies
- Attempted to bring all dependencies into the new world of n-util
- Swapped util for n-util in response to new Node module name conflict.
- Reorganized for NPM
- Renamed ComponentMap back to Branch
- Renamed Redirect to PermanentRedirect
- Introduced TemporaryRedirect
- Introduced PostJson