rajt
Version:
A serverless bundler layer, fully typed for AWS Lambda (Node.js and LLRT) and Cloudflare Workers.
34 lines (24 loc) • 986 B
text/typescript
import { dirname, join } from 'pathe'
import { config } from 'dotenv'
import { getRoutes, getMiddlewares, getConfigs } from './routes'
import { registerHandler, registerMiddleware } from './register'
import Config from './config'
import OAS from './oas'
import createApp from './create-app'
import { Ability } from 'rajt/auth'
import { setEnv, detectEnvironment } from 'rajt/env'
setEnv(detectEnvironment())
const __dirname = join(dirname(new URL(import.meta.url).pathname), '../../../')
config({ path: join(__dirname, '.env.dev') })
Config.add(await getConfigs())
let routes = await getRoutes()
routes.forEach(r => registerHandler(r.name, r.handle))
routes = routes.filter(r => r?.method && r?.path)
const middlewares = await getMiddlewares()
middlewares.forEach(mw => registerMiddleware(mw.handle))
Ability.fromRoutes(routes)
Ability.roles = Config.get('roles', {})
// @ts-ignore
const app = createApp({ routes })
OAS.register(app, Config.get('rajt', {}))
export default app