Restify v9.0.0 Release Notes

Release Date: 2022-11-15 // over 1 year ago
  • โš  BREAKING CHANGES

    • โœ‚ remove deprecated usage of pino.child (#1902)
    • ๐Ÿšš deprecates and removes re-routing when passing a string parameter to next()
    • โœ‚ removes RequestCaptureStream and replaces Bunyan with Pino
    • โž• adds async/await support to pre, use and handler chains
    • โšก๏ธ drops suppoprt to node 8 and updates linting rules
    • server: - Server returns RequestCloseError instead of RequestAbortedError
    • travisci: dropping support below Node.js 4

    ๐Ÿ”‹ Features

    • ๐Ÿ‘ async/await support (12be9e2)
    • ๐Ÿ—„ deprecate req.closed (d052b7c)
    • provide callback to uncaughtException handler (#1766) (5e8b5e2)
    • โœ‚ remove re-routing from handler (#1847) (9153587)
    • send 500s for unhandled requests (#1777) (885cecd)
    • audit: Add the ability to specify a custom audit log serializer (for err, req and res) (#1746) (6231acd)
    • chain: schedule handlers to the next tick (#1798) (806ed71)
    • chain: use nextTick instead of setImmediate (#1808) (703470a)
    • deps: replace cover/istanbul with nyc (#1823) (361f83e)
    • first: Handlers that execute ASAP in the req/res lifecycle (#1756) (8178098)
    • http2: add native HTTP/2 support (#1489) (6b20285)
    • ๐Ÿ”Œ plugin: plugin to serve static files (#1753) (a67b25f)
    • Ability to find a route by a path (711a489)
    • โž• add router.render() back to support hypermedia usecase (#1752) (0700cfd), closes #1684
    • helpers: add compose feature (#1660) (eb60ef4)
    • ๐Ÿ”Œ plugins: context, req.get() returns the whole context (#1739) (6e35e01)
    • ๐Ÿ”Œ plugins: do not include user-input in UnsupportedMediaTypeError message (VError fails), move it to info (#1733) (06c220d)
    • req: add restifyDone event (#1740) (4900d6b)
    • โž• add support for non-strict formatters (#1721) (de1833a)
    • ๐Ÿ“œ jsonBodyParser handles extended content types *+json (#1663) (4537514)
    • router: add ignoreTrailingSlash router option (#1632) (92ffbf5)
    • server: new router and middleware system (#1561) (8283277)
    • cpuUsageThrottle (#1460) (84be679)
    • ๐Ÿ”Œ throttle plugin: expose rate limit metrics as headers (#1453) (1627a55)
    • ๐Ÿ”Œ create inflightRequestThrottle plugin (#1431) (285faf4)
    • โช revert async formatters (#1377) (a2e300f)

    ๐Ÿ› Bug Fixes

    • โž• add support for secureOptions in createServer (#1575) (656e60e)
    • ๐Ÿ‘ Allow multiple unmerged set-cookie headers. (#1570) (df04015)
    • Correct typo in assertion message (#1904) (195cf13)
    • ๐Ÿ“š documentation typo fix (#1688) (0fa7132)
    • don't create empty clientError listener for http.Server (#1895) (ddc1042)
    • emit after event with proper error param for node versions >= 11.4.0 (#1732) (7a1378b)
    • ๐Ÿ“ฆ examples/todoapp/package.json to reduce vulnerabilities (#1832) (d9b27c6)
    • format falsy constants properly in json formatter (#1792) (3002182)
    • ๐Ÿ‘‰ make arity error message actionable (#1901) (97b6f93)
    • โœ… more flaky metrics.test.js fixes (#1730) (71aac42)
    • properly handle non-errors thrown in domains (#1757) (cb2e717)
    • โœ… proxy events into instance var and add test script (#1661) (de72f49)
    • ๐Ÿ‘ Re-add support for clientError listeners (#1897) (05f12a6)
    • โœ‚ remove invalid triggering of uncaughtException handler (#1710) (ee69806)
    • Return 444 status code for closed and aborted requests (#1579) (644c198)
    • ๐Ÿ›ฐ send numbers or bools as payloads (#1609) (0919f26)
    • server should fire not acceptable event (#1627) (8b11b71)
    • ๐Ÿ‘‰ use close event on response instead of socket (#1892) (5c7eb95)
    • ๐Ÿ‘‰ use more reliable close event (36318ae)
    • benchmark: force latest restify version (#1810) (b8ec60e)
    • bodyReader: Fix memory leak (#1566) (756b3f0)
    • cpuUsageThrottle: Always queue a new timeout (#1484) (e4ffe43)
    • cpuUsageThrottle: Correctly named handler for debugInfo (#1499) (78b0900)
    • cpuUsageThrottle: dont include interval in lag (#1504) (eecb2d2)
    • cpuUsageThrottle: support breaking change in pidusage module (7460064)
    • dev: pin to exact versions of linting tools and fix lint errors (3740a6b)
    • dev: remove nsp since the project merged with npm (1dc34b4)
    • dev: upgrading modules including restify-errors (#1755) (3b71229)
    • dtrace: route probes (#1659) (84bcded)
    • inflightRequestThrottle: properly handle next (#1471) (4db404f)
    • ๐Ÿ“œ jsonBodyParser: fix percent sign causing server fail (#1411) (bde8fda)
    • npm: exclude extraneous files (#1818) (e8516c3)
    • npm: remove unleash dependency (#1522) (a43aa60)
    • ๐Ÿ”’ package-lock.json: remove artifacts.netflix.com repo (#1526) (3d2f0f7)
    • ๐Ÿ”Œ plugins: save req._matchedVersion (#1642) (69f917a)
    • ๐Ÿ”Œ plugins: use process.hrtime() for duration calculation (#1507) (e8efd6c)
    • request: date() and time() methods return value (#1576) (4c2cb1a)
    • server: address domain performance regression with Node v12.x (#1809) (e648d49)
    • server: address req and res close event changes in Node v10.x (#1672) (6be3fb7)
    • server: avoid http2 experimental warning without http2 option (#1555) (12da7fd)
    • server: avoiding uncaughtException in _routeErrorResponse by only sending response when not sent (#1568) (cf65c65)
    • server: fix uncaught exceptions triggering route lookups (#1717) (e49cb3b)
    • โœ… test: make upgrade test pass (#1772) (d30b748)
    • 652 - Incorrect error on route with no versions (#1465) (ee15490)
    • โž• Add migration guid to website (#1402) (5f053c7)
    • โž• add node 7-8 travis support (#1405) (536a473)
    • โœ… create unit tests for sanitizePath plugin (#1352) (12714cf)
    • doc site (#1393) (76ee548)
    • ๐Ÿ“š documentation update for restifyError event example (#1398) (94fe715)
    • emit restifyError event even for router errors (#1420) (f9d02d5)
    • redirect should work even when hostname or protocol is not specified in req.url (#1497) (e696a1f)
    • server: error in pre handler triggers after event (#1500) (c2e6dea)
    • ๐Ÿ”’ exclude package-lock.json (#1477) (011fdf0)
    • static: avoid user-provided data in Error messages being interpreted as sprintf codes (#1384) (#1472) (9906344)
    • audit timers of same name should accumulate (#1435) (#1443) (a2d34aa)
    • ๐Ÿ“š GH-1438, error reponse customization documentation incorrect (#1439) (dd66088)
    • Honor port for redirect (#1363) (61c0cb5)
    • monkey patch getHeaders for pre-v7 Node.js (GH-1409) (82088a7)
    • ๐Ÿ“ฆ package.json version now matches npm (9944dbd)
    • respect when status code is set with res.status (GH-1429) (#1440) (5abc067)
    • โœ… test static plugin's handling of sprintf escape sequences (#1391) (5d7039a)
    • โšก๏ธ update chai (3.4.1 to 4.0.0) (f982d0c)
    • โšก๏ธ Update dependency mime to 1.4.0 (#1467) (6d38b38)
    • โšก๏ธ update http-signature to v1.0.0 (#1401) (ec88737)
    • ๐Ÿ‘‰ use Buffer.isBuffer instead of util.isBuffer. (#1593) (35bd1c2)
    • ๐Ÿ”– versioned route matching should not throw TypeError (#1381) (25d10f0)
    • audit: use public APIs for accessing response headers (5169db7), closes /nodejs.org/api/deprecations.html#deprecations_dep0066

    • Prefer Pino logger over Bunyan (#1841) (2f5bf87), closes #1841

    Miscellaneous Chores

    • โฌ‡๏ธ drop support for node 8 (bd34988)
    • โœ‚ remove deprecated usage of pino.child (#1902) (0a8cf83)
    • travisci: revisit nodejs version. Change to: LTS active, LTS maintenance (4.x) and stable releases (#1553) (49eb008)

Previous changes from v8.5.1

  • ๐Ÿ› Bug Fixes

    • benchmark: force latest restify version (#1810) ([b8ec60e3](git://github.com/restify/node-restify.git/commit/b8ec60e3))
    • server: address domain performance regression with Node v12.x (#1809) ([e648d491](git://github.com/restify/node-restify.git/commit/e648d491))