Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

32 Commits

Repository files navigation

@typeofweb/server

All Contributors

codecovnpm

Docs

Sponsors

<your name here>

See opencollective.com/typeofweb or github.com/sponsors/typeofweb! ❤️

Contributors ✨

Thanks goes to these wonderful people (emoji key):


Bartłomiej Wiśniewski

💻

This project follows the all-contributors specification. Contributions of any kind welcome!

Example

import{createApp}from'@typeofweb/server';import{dbPlugin}from'./dbPlugin';import{authPlugin}from'./authPlugin';constapp=awaitcreateApp({host: 'localhost',port: 3000,});app.plugin(dbPlugin);app.plugin(authPlugin);app.route({path: '/health-check/:count',method: 'GET',validation: {query: {},params: {count: number(),},payload: {},response: {},},asynchandler(request){if(!request.plugins.auth.session){thrownewHttpError(HttpStatusCode.Unauthorized);}const{ params }=request;constresult=awaitrequest.server.plugins.db.user.findOne(params.count);request.events.emit('found',result);returnresult;},});constserver=awaitapp.listen();
// dbPlugin.tsimport{createPlugin}from'@typeofweb/server';declare module '@typeofweb/server'{interfaceTypeOfWebServerMeta{readonlydb: PrismaClient;}interfaceTypeOfWebRequestMeta{readonlyauth: {readonlysession: Session};}interfaceTypeOfWebServerEvents{readonlyfound: User;}}exportconstdbPlugin=createPlugin('db',async(app)=>{return{server: newPrisma(),};});
// authPlugin.tsimport{createPlugin}from'@typeofweb/server';exportconstauthPlugin=createPlugin('auth',async(app)=>{return{request(request){constsession=awaitrequest.plugins.db.session.findOne({id: request.cookies.session});return{ session };},};});

About

100% typesafe wrapper around Express.js

Topics

Resources

Code of conduct

Stars

13 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages