0.2.15 • Published 2 years ago

@improvising/leap v0.2.15

Weekly downloads
-
License
MIT
Repository
-
Last release
2 years ago

Leap Framework

The MongoDB-based Integrated Web Framework

Usage example

import { transform, Type, useHttpServer, useRouter } from '@improvising/leap'

const httpServer = useHttpServer()

const router = useRouter()
const userRouter = useRouter()
const postRouter = useRouter()

postRouter.get('/', {
  schema: {
    params: Type.Object({
      userId: Type.Optional(Type.String({ format: 'integer' })),
    }),
  },
  handler: async req => {
    const { userId } = transform(req.params, { userId: Number })

    return { userId }
  },
})

userRouter.get('/', {
  schema: {
    querystring: Type.Object({
      limit: Type.Optional(Type.String({ format: 'integer' })),
      skip: Type.Optional(Type.String({ format: 'integer' })),
    }),
  },
  handler: async req => {
    const { limit = 20, skip = 0 } = transform(req.query, {
      limit: Number,
      skip: Number,
    })

    return { limit, skip }
  },
})

userRouter.get('/:userId', {
  schema: {
    params: Type.Object({
      userId: Type.String({ format: 'integer' }),
    }),
  },
  handler: async req => {
    const { userId } = transform(req.params, { userId: Number })

    return { userId }
  },
})

userRouter.use('/:userId/posts', postRouter)

router.use('/users', userRouter)
router.use('/posts', postRouter)

httpServer.use(router, { prefix: '/api' })

httpServer.listen(
  {
    port: 3000,
    host: '0.0.0.0',
  },
  err => {
    if (err) {
      console.error(err)
    } else {
      console.log('Hello world!')
    }
  },
)
0.2.15

2 years ago

0.2.14

2 years ago

0.2.13

2 years ago

0.2.12

2 years ago

0.2.10

2 years ago

0.2.1

2 years ago

0.2.7

2 years ago

0.2.6

2 years ago

0.2.9

2 years ago

0.2.8

2 years ago

0.2.3

2 years ago

0.2.2

2 years ago

0.2.5

2 years ago

0.2.4

2 years ago

0.1.5

2 years ago

0.1.4

2 years ago

0.1.3

2 years ago

0.1.2

2 years ago