UNPKG

powr-sdk-api

Version:

Shared API core library for PowrStack projects. Zero dependencies - works with Express, Next.js API routes, and other frameworks. All features are optional and install only what you need.

83 lines (76 loc) 2.79 kB
"use strict"; const express = require('express'); const { injectProjectId } = require('../middleware/projectId'); const { verifyToken } = require('../middleware/jwtToken'); // Import all route modules const commentsRoutes = require('./comments'); const filesRoutes = require('./files'); const formsRoutes = require('./forms'); const invoicesRoutes = require('./invoices'); const likesRoutes = require('./likes'); const functionsRoutes = require('./functions'); const ratingsRoutes = require('./ratings'); const usersRoutes = require('./users'); const waitlistsRoutes = require('./waitlists'); const activitiesRoutes = require('./activities'); const authRoutes = require('./auth'); const slidesRoutes = require('./slides'); const notificationsRoutes = require('./notifications'); const profilesRoutes = require('./profiles'); const chatRoutes = require('./chat'); const feedsRoutes = require('./feeds'); const toolsRoutes = require('./tools'); const tasksRoutes = require('./tasks'); // Synchronous router creation const createPowrRoutes = (options = {}) => { const router = express.Router(); // Use the dedicated projectId injection middleware router.use(injectProjectId(options)); router.use('/auth', authRoutes); router.use('/comments', verifyToken, commentsRoutes); router.use('/files', verifyToken, filesRoutes); router.use('/forms', formsRoutes); router.use('/invoices', verifyToken, invoicesRoutes); router.use('/likes', verifyToken, likesRoutes); router.use('/functions', verifyToken, functionsRoutes); router.use('/ratings', verifyToken, ratingsRoutes); router.use('/users', verifyToken, usersRoutes); router.use('/waitlists', verifyToken, waitlistsRoutes); router.use('/activities', verifyToken, activitiesRoutes); router.use('/slides', verifyToken, slidesRoutes); router.use('/notifications', verifyToken, notificationsRoutes); router.use('/profiles', verifyToken, profilesRoutes); router.use('/chat', verifyToken, chatRoutes); router.use('/feeds', verifyToken, feedsRoutes); router.use('/tools', verifyToken, toolsRoutes); router.use('/tasks', verifyToken, tasksRoutes); return router; }; // Create common routes (welcome, health) for any service const createCommonRoutes = (options = {}) => { const router = express.Router(); // Welcome route (public) router.get("/", (req, res) => { res.json({ message: options.welcomeMessage || "Welcome to Cloud API", version: options.version || "1.0.0" }); }); // Health check route (public) router.get("/health", (req, res) => { res.json({ status: "healthy", timestamp: new Date().toISOString(), service: options.serviceName || "api" }); }); return router; }; module.exports = { createPowrRoutes, createCommonRoutes };