|
1 | | - |
2 | 1 | // app.js - Entry point for our application |
3 | 2 |
|
| 3 | +import { createRequire } from 'module'; |
| 4 | +import cookieParser from 'cookie-parser'; |
4 | 5 | // Load in all of our node modules. Their uses are explained below as they are called. |
5 | | -const express = require('express'); |
6 | | -const morgan = require('morgan'); |
7 | | -const cron = require('node-cron'); |
8 | | -const fetch = require('node-fetch'); |
9 | | -const cookieParser = require('cookie-parser'); |
| 6 | +import express from 'express'; |
| 7 | +import morgan from 'morgan'; |
| 8 | +import cron from 'node-cron'; |
| 9 | +import fetch from 'node-fetch'; |
| 10 | +import swaggerUi from 'swagger-ui-express'; |
| 11 | + |
| 12 | +const require = createRequire(import.meta.url); |
| 13 | +let swaggerDocument; |
| 14 | +try { |
| 15 | + swaggerDocument = require('./swagger-output.json'); |
| 16 | +} catch (e) { |
| 17 | + console.warn('swagger-output.json not found. Run "npm run swagger" to generate it.'); |
| 18 | + swaggerDocument = null; |
| 19 | +} |
10 | 20 |
|
11 | 21 | const customRequestHeaderName = 'x-customrequired-header'; |
12 | | -const dontCheckCustomRequestHeaderApis = ['GET::/api/recurringevents', 'GET::/api/healthcheck']; |
13 | | - |
14 | | -// Import environment variables |
15 | | -const dotenv = require('dotenv'); |
16 | | -const dotenvExpand = require('dotenv-expand'); |
17 | | - |
18 | | -const myEnv = dotenv.config(); |
19 | | -dotenvExpand(myEnv); |
| 22 | +const dontCheckCustomRequestHeaderApis = [ |
| 23 | + 'GET::/api/recurringevents', |
| 24 | + 'GET::/api/healthcheck', |
| 25 | + 'GET::/api-docs', |
| 26 | + 'GET::/api-docs/', |
| 27 | +]; |
20 | 28 |
|
21 | 29 | // Verify environment variables |
22 | | -require('assert-env')([ |
| 30 | +import assertEnv from 'assert-env'; |
| 31 | +assertEnv([ |
23 | 32 | 'CUSTOM_REQUEST_HEADER', |
24 | 33 | 'SLACK_OAUTH_TOKEN', |
25 | 34 | 'SLACK_BOT_TOKEN', |
@@ -52,37 +61,41 @@ app.use(cookieParser()); |
52 | 61 | // HTTP Request Logger |
53 | 62 | app.use(morgan('dev')); |
54 | 63 |
|
55 | | -// WORKERS |
56 | | -const runOpenCheckinWorker = require('./workers/openCheckins'); |
57 | | -runOpenCheckinWorker(cron, fetch); |
58 | | - |
59 | | -const runCloseCheckinWorker = require('./workers/closeCheckins'); |
60 | | -runCloseCheckinWorker(cron, fetch); |
| 64 | +// Swagger API Documentation |
| 65 | +if (swaggerDocument) { |
| 66 | + app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocument)); |
| 67 | +} |
61 | 68 |
|
62 | | -const { createRecurringEvents } = require('./workers/createRecurringEvents'); |
63 | | -createRecurringEvents(cron, fetch); |
64 | | -// const runSlackBot = require("./workers/slackbot")(fetch); |
| 69 | +import closeCheckins from './workers/closeCheckins.js'; |
| 70 | +import createRecurringEvents from './workers/createRecurringEvents.js'; |
| 71 | +// WORKERS |
| 72 | +import openCheckins from './workers/openCheckins.js'; |
| 73 | +const runOpenCheckinWorker = openCheckins(cron, fetch); |
| 74 | +const runCloseCheckinWorker = closeCheckins(cron, fetch); |
| 75 | +const runCreateRecurringEventsWorker = createRecurringEvents(cron, fetch); |
| 76 | +// import slackbot from './workers/slackbot.js'; |
| 77 | +// const runSlackBot = slackbot(fetch); |
65 | 78 |
|
66 | 79 | // Run cleanup expired refresh token(s) on startup |
67 | | -const { cleanupExpiredTokens } = require('./workers/tokenCleanup'); |
| 80 | +import { cleanupExpiredTokens } from './workers/tokenCleanup.js'; |
68 | 81 | cleanupExpiredTokens(); |
69 | 82 |
|
70 | 83 | // MIDDLEWARE |
71 | | -const errorhandler = require('./middleware/errorhandler.middleware'); |
| 84 | +import errorhandler from './middleware/errorhandler.middleware.js'; |
72 | 85 |
|
| 86 | +//import slackRouter from './routers/slack.router.js'; |
| 87 | +import authRouter from './routers/auth.router.js'; |
| 88 | +import checkInsRouter from './routers/checkIns.router.js'; |
| 89 | +import checkUserRouter from './routers/checkUser.router.js'; |
73 | 90 | // ROUTES |
74 | | -const eventsRouter = require('./routers/events.router'); |
75 | | -const checkInsRouter = require('./routers/checkIns.router'); |
76 | | -const usersRouter = require('./routers/users.router'); |
77 | | -const questionsRouter = require('./routers/questions.router'); |
78 | | -const checkUserRouter = require('./routers/checkUser.router'); |
79 | | -const grantPermissionRouter = require('./routers/grantpermission.router'); |
80 | | -const projectsRouter = require('./routers/projects.router'); |
81 | | -const recurringEventsRouter = require('./routers/recurringEvents.router'); |
82 | | -const projectTeamMembersRouter = require('./routers/projectTeamMembers.router'); |
83 | | -//const slackRouter = require("./routers/slack.router"); |
84 | | -const authRouter = require('./routers/auth.router'); |
85 | | -const healthCheckRouter = require('./routers/healthCheck.router'); |
| 91 | +import eventsRouter from './routers/events.router.js'; |
| 92 | +import grantPermissionRouter from './routers/grantpermission.router.js'; |
| 93 | +import healthCheckRouter from './routers/healthCheck.router.js'; |
| 94 | +import projectTeamMembersRouter from './routers/projectTeamMembers.router.js'; |
| 95 | +import projectsRouter from './routers/projects.router.js'; |
| 96 | +import questionsRouter from './routers/questions.router.js'; |
| 97 | +import recurringEventsRouter from './routers/recurringEvents.router.js'; |
| 98 | +import usersRouter from './routers/users.router.js'; |
86 | 99 |
|
87 | 100 | // Check that clients to the API are sending the custom request header on all methods |
88 | 101 | // except for ones described in the dontCheckCustomRequestHeaderApis array. |
@@ -132,4 +145,4 @@ app.get('*', (req, res, next) => { |
132 | 145 |
|
133 | 146 | app.use(errorhandler); |
134 | 147 |
|
135 | | -module.exports = app; |
| 148 | +export default app; |
0 commit comments