UNPKG

20.1 kBMarkdownView Raw
1# restify Changelog
2
3## 5.0.0
4 - #1377 Remove async formatters
5 - #1363 Honor port for `Response.prototype.redirect`
6 - #1369 Use public APIs for accessing response headers
7 - #1353 Deprecate `next.ifError`
8 - #1346 Return plugins to repo
9 - #1322 Remove duplicate `close` event from `Server`
10 - #1309 Add `getRoute()` to Request to get the route object. Rajat Kumar
11 - #1288 add `pre` and `routed` events. Yunong Xiao
12 - #1281 Add `server.getDebugInfo()` method, Yunong Xiao, Alex Liu
13 - #1281 `server.unfinishedRequests()` to `server.inflightRequests()`, Yunong Xiao
14 - #1256 add `req.id()` method, Alex Liu
15 - #1251 add `req.connectionState()` method, Alex Liu
16 - #1250 add `server.unfinishedRequests()` method, Alex Liu
17 - #1247 Update jyoent cloud API link in README, Devinsuit
18 - #1246 Fix syntax error in plugins.md example, Aria Stewart
19 - #1241 Rev formidable to remove Node6+ warnings, Alex Liu
20 - #1234 Update uuid to version 3.0.0, Marc Bachmann
21 - #1212 Fix typos in plugins.md, Greg Walden
22 - #1199 Update examples to use ES6, Amila Welihinda
23 - #1190 Fix minor typo, The-Alchemist
24 - #1179 Fix typo in comment, Niklas Ingholt
25 - Fix dtrace demo to not use async formatter, Yunong Xiao
26 - #1171 Router unmount now works for versioned routes, gcssabbagh
27 - #1143 add docs about serveStatic plugin, Michael Burguet
28 - #1135 ability to find a route by a path, Jacob Quatier
29 - #1129 always invoke res.send callback if one is provided, even when the
30 selected formatter is sync, Alex Liu
31 - #1128 don't send domain errors to the client, Alex Liu
32 - #1123 add deprecation warnings for domain dependent features, Alex Liu
33 - #1119 set response status code to 0 when the request is terminated by the
34 client, Alex Liu
35 - #1118 remove undocumented exports and other unused methods, Alex Liu
36 - #1113 Fix JSDOC comments, Marc Riegel
37 - #1111 new documentation guides, Nicolas Artman
38 - #1092 support for strict routing, lukealbao
39 - #1089 remove route from LRU cache on when calling `server.rm`, Luis Gómez
40 - #1086 support re-using request id headers on incoming requests, Alex Liu
41 - #1081 update documentation, default content-type is now application/json,
42 Dmitry Kirilyuk
43 - #1078 send the server name down in the header per documentation, Alex Liu
44 - #1072 update documentation for accept-version header, Ingo Renner
45 - #1071 rev node-uuid to address advisory CVE-2015-8851, Alex Liu
46 - #1056 fix `req.absoluteUri()` to use correct protocol, David Marek
47 - #1032 fix potential xss vector, Alex Liu
48 - #1024 **BREAKING** Disabled the uncaughtException handler by default, added
49 server option 'handleUncaughtExceptions' to allow enabling of it again
50 (restify 4.x and before used to handle exceptions by default), Todd Whiteman
51 - #1047 update documentation for spdy example, Tyler Akins
52 - #1041 add `rejectUnknown` option to restify plugin documentation, Dmitry
53 Kirilyuk
54 - #1038 capitalize header field for Location per RFC, Tommi Kyntola
55 - #1011 update documentation to remove outdated references. fix more links,
56 lukealbao
57 - #1010 update documentation to include charSet property for static plugin,
58 Greg Walker
59 - #1000 update spdy to 3.2.0, Andy Tzeng
60 - #1007 remove `defaultResponseHeaders` from documentation, lukealbao
61 - #999 server `NotFound` handler is now normalized, works like other error
62 events and no longer flushes responses automatically, Alex Liu
63 - #991 update documentation links for new plugins and errors repo, Ken Warner
64 - #987 disallow multiple values for content-type header, James O'Cull
65 - #985 CORS removed from restify core. support `next(false)` in pre handler
66 chains, Alex Liu
67 - #982 allow sending of null body, Felix Milea-Ciobanu
68 - #973 rev latest restify-errors, fix todoapp examples, Micah Ransdell
69 - #972 added shrinkwrap+nsp for security vuln checks, Alex Liu
70 - #971 Fix error creation when error message contain URI encoded characters,
71 Benjamin Urban
72 - #969 Fix incorrect usage of assert.AssertionError, Alex Liu
73 - #965 added unit test for sending null body, Michael Nisi
74 - #964 Fix cached routes not setting maxVersion, Alex Liu
75 - #963 enhancements to res.redirect. server now emits `redirect` event, James
76 Womack
77 - #960 update documentation for websocket example, Richard Kiene
78 - #958 RequestCaptureStream now writes triggering record, Gerrard Lindsay,
79 Yunong Xiao
80 - #955 update documentation for socket.io example, Thorsten Hans
81 - #952 Formatters no longer set status codes or inspect payload, Christian
82 Bongiorno, Alex Liu
83 - #951 `res.sendRaw()` allows sending of responses without use of formatters,
84 Matthew Amato, Alex Liu
85 - #947 update documentation links for readme.md & badges, ReadmeCritic
86 - #944 Support generic event listener, Alex Liu
87 - #943 Fix typos in documentation, azollyx
88 - #939 Fix issue where missing content-type header would hang response, Alex
89 Liu
90 - #935 Clearer docs for using certs, Vikram Tiwari
91 - #932 Update to spdy 2.x, Fedor Indutny
92 - #924 Update docs for async formatter breaking change, Magnus Wolffelt
93 - #891 stop processing requests when 'close' event has been fired (early
94 client termination), Alex Liu
95 - #883 hypens no longer stripped from route names, Sean Wragg
96 - #903 Update docs to reflect new error handling, Jacob Quatier
97 - #889 Bump dependencies to latest, Micah Ransdell
98 - #845 Support sync and async formatters, Alex Liu
99 - #844 Move Errors to their own module, Alex Liu
100 - #855 Clients now live in its own repo and npm module, Alex Liu
101 - Various documentation improvements from leitsubomi
102
103## 4.3.0
104
105- #1024 Add `handleUncaughtExceptions` server option to supporting disabling
106 the uncaughtException handler.
107
108## 4.2.0
109
110- #925 Support passing (most) [qs](https://github.com/ljharb/qs#readme) options
111 to the `restify.queryParser` plugin. Update the "qs" dependency to latest (v6)
112 while maintaining backward compatibility (see notes in the API doc and
113 "test/query.test.js" on `allowDots` and `plainObjects`).
114
115## 4.1.1
116
117- update negotiator (NSP advisory #106) and lru-cache (bug fix).
118
119## 4.1.0
120
121- Bump SPDY to latest.
122- #959: fix issue where cached routes were not setting maxVersion on the req
123
124## 4.0.4
125
126- #937 Fix missing content-type header causing response to hang
127
128## 4.0.3
129- #917 Fix: HTTP 413 status name, Micah Ransdell
130
131## 4.0.2
132- #887 Bump dtrace-provider to 0.6.0 for Node 4 support, Corbin Uselton
133
134## 4.0.0
135- #877 content-type can be case-insensitive. Yunong Xiao
136- #856 update various dependencies. Alex Liu
137- #851 **BREAKING** fix formatters such that they always return cb. Yunong Xiao
138- #847 fix body parser race condition. Yunong Xiao
139- #842 add `req.matchedVersion()` Nathan Peck, Micah Ransdell
140- #840 Fix issue with server toString Method. OiNutter, Micah Ransdell
141- #836 Add JSDoc comments. Alex Liu
142- #835 Update static.js to allow for serving static files that do not use the route as a path. Wavewash, Micah Ransdell
143- #831 Support hash option to Formidable for multipart file uploads. blakevanian, ManRueda
144- #832 Updated dtrace-provider. yads
145- #812 add query parameters to auditlogger. Alex Liu
146- #800 Allow 0, false, and null as json body. Alex Dobeck
147- #771 q-value choice on wildcards ignores default q-value of 1. Kevin Peno
148- #822 Allow optional headers to be added as properties to bunyan logs. Michael Paulson.
149- #824 Don't include large coverage files in published packages. Trent Mick
150- #819 Add a feature to allow the expiration of old unprocessed requests. Michael Paulson
151- #803 Add redirect support to Response. Alex Liu
152- #686 `res.send` can't send 0, false and null. Alex Dobeck
153
154## 3.0.3
155- #669 Fix socket.io 1.x integration. Mark Doeswijk
156- #662 Improve request logger doc. Jordan Klassen
157- #793 Update Server API error event listener doc. github.com/durkes
158- #795 Remove unused vars in source. James Womack
159- #796 Hypermedia API fails when paths have multiple patterns with sub-regexs. Morten Fangel
160- #775 Fix UTF-8 corruption in body parser. Michał Moskal
161
162## 3.0.2
163- #785 update semver dependency.
164
165## 3.0.1
166- #779 set-cookie headers should not include comma separated values. See:
167 http://tools.ietf.org/html/rfc6265#section-3
168
169## 3.0.0
170
171- Bumping major because of #753
172
173## 2.9.0
174
175- #688 Fix various throttle bugs
176- #691 Fix an issue where posting with text/csv content type crashes Restify
177- #693 Support multiple response header values
178- #704 Allow partial regex for named parameters
179- #726 Allow per-request agent overrides
180- #726 Ebanle `{agent: false}` option override per request
181- #727 Fix JSON body parser behavior when request body is null
182- #727 Fix a bug when `req.body === null`
183- #731 SVG badges in README
184- #734 Add API to track timers for nested handlers
185- #744 Fix `request.isUpload` for PATCH requests
186- #751 Fix `server.url` property when using IPv6
187- #758 Switch to UUID v4
188- #758 Use v4 UUIDs for `[x-]request-id`
189- #759 Documentation fix
190- #762 `res.noCache()` API to prevent all caching
191- #767 Prefer the existing `err` serializer for audit logging
192- Update dtrace-provider dependency
193- #753 **BREAKING** Include `err` parameter for all \*Error events:
194 Error events will all have the signature `function (req, res, err, cb)` to
195 become consistent with the handling functionality introduced in 2.8.5.
196 Error handlers using the `function (req, res, cb)` signature must be updated.
197
198## 2.8.5
199
200- Add ability to listen for error events
201- Documentation fixes
202
203## 2.8.4
204
205- Update dtrace-provider, bunyan and backoff
206- Fix request URL cache interaction with dtrace probes
207
208## 2.8.3
209
210- Support html5 multiple file uploads
211
212## 2.8.2
213
214- #619 Default to url, if string provided to createClient
215- #614 do not compute the MD5 Hash of a partial content
216- #516 Allow an `options` object to be passed into the authorization plugin
217- Updating dependencies
218- #626 Add more built-in errors to doc
219- #460 Provide direct access to https server options if needed
220- #656 update qs
221
222## 2.8.1
223
224- revert #604, work around by not removing client listener
225
226## 2.8.0
227
228- #604 trap http client errors
229- #598 Simplify and correct path segment regexp
230- #570 Route matching should only prefer later routes if version is greater
231- #564 Using req.accepts() according to implementation
232- #504 Helper to render a route with given parameters (for hypermedia APIs)
233
234## 2.7.0
235
236- #547 Added mapFiles option to bodyParser
237- #552 PUT JsonClient test should use PUT not POST
238- #550 Make router preflight code more readable
239- #548 Allow custom handling of multipart data.
240
241## 2.6.3
242
243- Hotfix for CORS plugin if no origin was set in the options
244
245## 2.6.2
246
247- #508 add server option: `ciphers` to pass down to https(tls)
248- #502 `server.on('request')` not emitting
249- #496 static plugin incorrectly handling `directories`; revert back to 2.6.0
250 version
251- #495 don't override client response code with custom error object
252- #494 socket connecting detection logic incorrect
253- #492 client `false` needs to actually disable retries
254- changed indent from four to eight
255- #505 fix audit logger plugin bug
256- #510 request timeout support
257- #523 added Access-Control-Allow-Credentials to the preflight handler
258
259## 2.6.1
260
261- #478 Add `req.timers` to audit logging plugin.
262- #487 RequestCaptureStream: dumpDefault, haveNonRawStreams, zero ring after dump
263- #407 - bunyan 0.21.3
264- Add CSV/TSV parser (Dominik Lessel)
265- Add `req.timers`: a list of hrtime's for each handler
266- Set TCP SO_KEEPALIVE when default KeepAliveAgent is on (client)
267
268## 2.6.0
269
270- EXPERIMENTAL: Native websocket support via watershed (Josh Clulow)
271- Pass entire route, not just route.name to `after` (Dingman)
272- Type coercion bug in Cache Control API (Chris Cannell)
273
274## 2.5.1
275
276- GH-401 RegEx routes stomp one another, resulting in 404
277- GH-389 StringClient should handle garbage servers that send neither
278 `Content-Length` nor `Transfer-Encoding: chunked` headers.
279
280## 2.5.0
281
282- Pick up http-signature@0.10.0 (breaking change, to those using it); see
283 https://github.com/joyent/node-http-signature/issues/10
284- GH-388 JSON client blows up on bad content
285- GH-379 Static plugin: NotAuthorizedError for file path with
286 parentheses (Ricardo Stuven)
287- GH-370 Add charSet option for static file plugin (Jonathan Dahan)
288
289## 2.4.1
290
291- Support node 0.10.X TLS options in client(s)
292
293## 2.4.0
294
295- GH-368 Route /\/.*/ does not match request /? (Ben Hutchison)
296- GH-366 `req.accepts()` not working with short-hand mime types
297- GH-362 Empty body throws TypeError in StringClient (Bryan Donovan)
298- GH-355 Serve gzip encoded files from static if they are available
299 (Nathanael Anderson)
300- GH-338 turn `req.body` into an `Object` when content-type is
301 JSON (Daan Kuijsten)
302- GH-336 `res.charSet()` back in
303- dependency version bumps
304- 0.10.X support in tests (add necessary `resume()` calls)
305- client should log request/response pairs
306
307## 2.3.5
308
309- bunyan@0.20.0
310- GH-346 `server.toString()` crashes (Alex Whitman)
311- GH-193 support `next('name_of_route')`
312
313## 2.3.4
314
315- GH-343 default to 'identity' for accept-encoding
316- GH-342 client support for PATCH
317- Pick up spdy@1.4.6 (doesn't ship all the example garbage)
318
319## 2.3.3
320
321- Stop logging client_req in bunyan output
322- GH-319 make DTrace optional
323- GH-335 Content-Type'd routes not accepting array (Pedro Palazón)
324
325## 2.3.2
326
327- pick up bunyan 0.18.3
328- server.address() returning null causes server.url to deref null
329
330## 2.3.1
331
332- GH-335 Content-Type'd routes not correct when only Accept-Extension varies,
333 part deux (switch to `negotiator`, drop `mimeparse`).
334
335## 2.3.0
336
337- GH-335 Content-Type'd routes not correct when only Accept-Extension varies
338- GH-332 Cache-Control max-age should show minutes (Ben Hutchison)
339- GH-329 Wrong values in res.methods on some cases
340- GH-327 server.versionedUse('1.2.3', function (req, res, next) {}) (Tim Kuijsten)
341- GH-326 non-default origins not working, Chrome requires allow/origin and
342 allow users to append to CORS array (John Fieber/Damon Oehlman)
343- GH-323 <path>/?<querystring> broken
344- GH-322 add `req.route`, which contains the original params for the
345 route (Tim Kuijsten)
346- GH-312 bodyParser() should return buffers when data is binary (Tim Kuijsten)
347- GH-318 Allow use of 'requestBodyOnGet' option in bodyParser (@geebee)
348
349## 2.2.1
350
351- GH-283 broke versioned, typed routes. Fix.
352- node-http-signature@0.9.11
353
354## 2.2.0
355
356- GH-316 drop `clone`, and just shallow copy (Trent Mick)
357- GH-284 preflight requests not working without access-control-request-headers
358- GH-283 versioned routes should use maximum match, not first (Colin O'Brien)
359- dtrace probes for restify clients
360- node-dtrace-provider@0.2.8
361- backoff@2.0.0 and necessary changes
362
363## 2.1.1
364
365- revert to backoff@1.2.0
366
367## 2.1.0
368
369- GH-284 built-in CORS
370- GH-290 next.ifError
371- GH-291 fix overwriting `options.type` in createJSONClient (Trent Mick)
372- GH-297 default document serving in static plugin (Adam Argo)
373- GH-299 gzip plugin doesn't play nice with content-length (Ben Hale)
374- GH-301 support private keys w/passphrase (Erik Kristensen)
375- GH-302 responseTime cleanup
376- Move to `node-backoff` and rework retry logic in HttpClient
377- Support keep-alive by default in HttpClient
378
379## 2.0.4
380
381- GH-280 req.params cached by router
382- RequestCaptureStream should support outputting to multiple streams
383- Default uncaughtException handler should check if headers have been sent
384
385## 2.0.2/2.0.3
386
387- GH-278 missing events on route errors
388- Undo `RestError` `constructorOpt` from 2.0.1
389
390## 2.0.1
391
392- GH-269 plugin to make curl happy
393- RestError not honoring `constructorOpt` from `cause`
394- GH-271 bump to dtrace 0.2.6 (fix build on Mountain Lion)
395
396# Legacy Releases
397
398## 1.4.2
399
400- logging typo (Pedro Candel)
401- response `beforeSend` event (Paul Bouzakis)
402
403## 1.4.1
404
405- GH-130 Allow restify and express to coexist.
406- GH-129 format HttpErrors as well as RestErrors (Domenic Denicola)
407- GH-127 add absolute uri to request (Paul Bouzakis)
408- GH-124 `req.query` is `undefined` if no query string was sent
409- GH-123 Generated DTrace probe names should be valid
410- GH-122 Response._writeHead can cause infinite loop (Trent Mick)
411- GH-120 Allow server.patch (Paul Bouzakis)
412- GH-119 defaultResponseHeaders not settable
413- GH-113 document `return next(false)`
414
415
416## 1.4.0
417
418- GH-116 More friendly error objects (Domenic Denicola)
419- GH-115 Client hangs on server "hard kills" (i.e., RST)
420- GH-111 JSON parser only works on objects (not arrays)
421- GH-110 emit expectContinue (Paul Bouzakis)
422- Fix "undefined" log message in string_client.js
423- GH-107
424 - Go back to hacking up http.prototype for performance reasons
425 - Default to keep-alive on for HTTP/1.1 requests
426 - Misc fixes after refactoring.
427- GH-109 routes not honoring regex flags.
428- GH-108 server missing `listening` event.
429- Audit logger optionally logs request/response bodies
430- Require http-signature@0.9.9/ctype@0.5.0 (node 0.7 compatible)
431
432## 1.3.0
433
434- GH-100 Make DTrace an optional dependency, and stub it out if not found.
435- res.link API not allowing sprintf style sets.
436- Support for `socketPath` in client API (alternative to url).
437- OPTIONS api not returning access-control-allow-methods header (Steve Mason).
438- Allow null passwords in HTTP basic auth (Andrew Robinson).
439- set `req.files` on multipart file uploads (Andrew Robinson).
440
441## 1.2.0
442
443- Don't rely on instanceof checks for Errors in response.
444- Change route.run log level from trace to debug on next(err).
445- Add `res.link` API (wrap up sending a Link: response header).
446- GH-98 req.secure needs to return a boolean, not an object
447- GH-97 Malformed URI results in server crash
448- GH-94 leverage `qs` module for object notation in query string.
449
450## 1.1.1
451
452- dependency version bumps
453- res.header accepts sprintf-style arguments
454- GH-95 Make restify compatible with node-logging (Andrew Robinson)
455- GH-93 Minimal port of express pre-conditions (Dominic Barnes)
456- GH-92 Make X-Response-Time configurable (Shaun Berryman)
457- GH-87 server.listen on port as string (Andrew Sliwinski)
458
459## 1.1.0
460
461- GH-86 Bunyan version bump.
462- Conditional Request plugin tests and fixes for some errors (Mike Williams).
463- GH-83 pluggable storage engine for throttling, and LRU for default engine.
464- GH-77 `server.on('uncaughtException', function (req, res, route, err) {});`
465- GH-79 Docs typo(s).
466
467## 1.0.1
468
469- Version bump bunyan to 0.6.4.
470
471
472## 1.0.0
473
474- Makefile restructure (use Joyent templates)
475- GH-20 HttpClient connectTimeout.
476- Allow parser plugins to allow "override" params
477- Proper handling of Expect: 100
478- multipart/form-data plugin
479- Added a 'header' event on res.writeHead
480- GH-72 Wrong server name in response header on 404/405/...
481- RegExp mounts throw a TypeError
482- Allow pre handlers to update request url
483- try/catch around route running
484- Bundled audit logger (via bunyan)
485- strict adherence to RFC3986 for URL encoding
486- range versioning changed to be an array of explicit versions
487- Switch from log4js to [bunyan](https://github.com/trentm/node-bunyan)
488- Official version of `ConditionalRequest` plugin (Falco Nogatz)
489- order formatters on response such that JSON/text are before custom ones
490- RestErrors can use format strings
491- date plugin has bad log check
492
493
494## 1.0.0-rc2
495
496- GH-66 Support for charSets in responses
497- GH-65 Initial version of etag plugin (Falco Nogatz)
498- GH-68 res.header() can serialize Date objects to RFC1123
499- GH-67 Set some default response headers earlier (access-control-*)
500- http-client should auto insert the date header
501- GH-64 Support for a pre-routing chain
502- JsonClient should "upcast" errors to RestErrors if it can
503- GH-63 res.send(204) returning a body of 204
504- GH-61 Make bodyParser merging into req.params optional
505- Make Error objects backwards compatible with older restify (httpCode/restCode)
506- GH-57, GH-62 range versioning on server (Diego Torres)
507- GH-59 routes with just '/' are returning 404
508- DTrace *-done actually firing content-length (was always 0)
509- [Issue 56] Support streaming downloads
510- Modify server.on('after') to emit the `Route` object, rather than the name.
511
512## 1.0.0-rc1
513
514(Started maintaining this log 21 January 2012. For earlier change information
515you'll have to dig into the commit history.)