UNPKG

rajt

Version:

A serverless bundler layer, fully typed for AWS Lambda (Node.js and LLRT) and Cloudflare Workers.

65 lines (52 loc) 1.82 kB
import { existsSync, writeFileSync } from 'node:fs' import { config } from 'dotenv' import { getRoutes, getMiddlewares } from '../routes' import ensureDir from '../utils/ensuredir' config({ path: '../../.env.dev' }) async function cacheRoutes() { const rolePath = '../../roles.json' if (!existsSync(rolePath)) writeFileSync(rolePath, '{}') const routes = await getRoutes() const middlewares = await getMiddlewares() const iPath = '../../tmp/import-routes.mjs' ensureDir(iPath) writeFileSync(iPath, `// AUTO-GENERATED FILE - DO NOT EDIT import { registerHandler, registerMiddleware } from '../node_modules/rajt/src/register' ${routes.map(r => `import ${r.name} from '../${normalizePath(r.file)}'`).join('\n')} ${middlewares.map(r => `import ${r.name} from '../${normalizePath(r.file)}'`).join('\n')} try { const handlers = {${routes.map(r => r.name).join()}} for (const [name, handler] of Object.entries(handlers)) { if (typeof handler === 'function' || handler.prototype?.handle) { registerHandler(name, handler) } } const middlewares = {${middlewares.map(r => r.name).join()}} for (const [name, mw] of Object.entries(middlewares)) { registerMiddleware(mw) } } catch (e) { console.error('Failed to register handlers:', e) } `) const rPath = '../../tmp/routes.json' ensureDir(rPath) writeFileSync(rPath, JSON.stringify(routes.filter(r => r.method && r.path).map(route => [ route.method, route.path, route.middlewares, route.name, ]))) } function normalizePath(file: string) { return file.replace(/\.tsx?$/i, '').replace(/(\/index)+$/i, '').replace(/\/+$/g, '') } cacheRoutes() .then(() => { console.log('✅ Routes cached!') process.exit(0) }).catch(e => { console.error('❌ Error: ', e) process.exit(1) })