Releases: tinyhttp/tinyhttp
v1.1.0. Markdown server upgrade & minor fixes
Core
- Fixes bugs with
req.url,req.pathandreq.originaUrl(#203) - Fixes
res.redirectincorrect URI encoding (#205) - Fixes
res.set(and extensions using it) not adding charset - Fixes
res.rendernot inheriting template engine settings
Middleware
@tinyhttp/markdownnow sends a stream instead of plain text using streamdown@tinyhttp/markdowndoesn't haverecursiveoption anymore. Instead of file listing, the current directory is switched in case the path contains a directory. Therefore, the ware no longer depends onreaddirp@tinyhttp/markdownnow has acachingsetting to configureCache-Controlheader@tinyhttp/sessionnow usesexpress-sessionas direct dependency instead of dev (#201)
Docs
- Fix typo with router methods in the docs (#204)
v1.0. The time has come.
Finally, after months of hard work, different implementation decisions, collaborations with contributors I'm thrilled to announce the first stable release of tinyhttp!
Express API implementation
100% ready. The only method that isn't implemented is app.param, which was deprecated in Express 4.11.
Core
Catching errors in async handlers
errors thrown in async handlers are now catched and passed to next, e.g. if an error is throwed in a handler it won't crash and will keep working.
Example:
import { App } from '@tinyhttp/app'
const app = new App()
app.use(async (_req, _res) => {
throw `error`
})
app.listen(3000)The app will return the error and send 500 status:
$ curl localhost:3000
error
Custom middleware extensions
WIth the new applyExtensions parameter you can define your own req / res extensions, or disable all tinyhttp's extensions to achieve the best performance.
import { App } from '@tinyhttp/app'
import { send } from '@tinyhttp/send'
const app = new App({
applyExtensions: (req, res, next) => {
// now tinyhttp only has a `res.send` extension
res.send = send(req, res)
}
})Other changes
- Test coverage is increased to 92%
- The majority of tinyhttp's modules have more flexible types now which don't require the full implementation of
IncomingMessageandServerResponseobjects but only the properties which are used inside the module. This will let developers use these packages inside their own projects and not only in Node.js runtime. - Docs are updated with the current status of the project.
tinyhttp 0.5
During hacktoberfest, lots of folks helped the project by submitting examples, writing tests and creating new middlewares. Thanks to everyone who contributed to the project!
Release details
Express API implementation progress
~96% of API is ready. Only a few methods left.
res.appendreq.path
New middleware
- unless by @shzmr
- rate-limit by @Luiginator
New examples
- Prisma REST API
- Prisma GraphQL
- PostgreSQL
- Sapper (Svelte SSR)
- React SSR
- rate limiting
- auth (session)
- search engine
Other minor changes
-
Coverage increase from 60% to 71%
-
@tinyhttp/markdown'srecursiveprop works properly now
0.4.X: Closer and closer to Express
In 0.4.X a lot of new req / res extensions are added, also some new app settings.
Request / Response extensions
Request
Properties
req.subdomainsreq.app
Methods
req.acceptsCharsetsreq.acceptsEncodingsreq.acceptsLanguagesreq.is
Response
Properties
res.localsres.app
Methods
res.typeres.formatres.redirect🎉
App
App now has 2 new settings:
subdomainOffset- configuration ofreq.subdomainsdomain offsetbindAppToReqRes- accessreq.appandres.app
Packages
Created new package - @tinyhttp/type-is
0.3.X
This is the first proper github minor release with lots of fixes and changes, all were made during a few months of hard work. Also, during this period, tinyhttp gained quite a good starting audience, people already start using it and I feel excited for what cool things can be built with tinyhttp!
Anyways, here's the release notes (I will probably automate it later):
- add template engine support
- add
sendFilefunction (most recent addition) and a lot of other Express methods - finish writing the docs
- add "common tasks" and "advanced topics" sections to docs
- split
@tinyhttp/appby 4 separate framework-agnostic packages - setup husky and commitlint
- add 25 examples
- add 10 middlewares, including
@tinyhttp/session,@tinyhttp/ip-filterand more